国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【Unity3d】UGUI小貼士:使用不規(guī)則按鈕

2019-11-09 18:55:07
字體:
供稿:網(wǎng)友

轉(zhuǎn)載自沐巳點(diǎn)の萬事屋點(diǎn)擊查看原文

在平時(shí)的游戲和平面程序開發(fā)中,難免會(huì)遇到需要使用不規(guī)則按鈕的需求,而Unity3d中使用UGUI的Button控件只能實(shí)現(xiàn)規(guī)則的長(zhǎng)方形按鈕。不過其實(shí)unity的Image提供了一個(gè)eventAlphaThreshold的屬性(在5.4以上版本中改為alphaHitTestMinimumThreshold),這個(gè)屬性提供了一個(gè)閾值來限制射線檢測(cè)生效的alpha值。也就是說,比如我們將閾值設(shè)為0.5(該值類型為float,有效范圍0到1),那么點(diǎn)擊Image上像素的alpha值小于0.5的區(qū)域時(shí),程序是不會(huì)檢測(cè)到點(diǎn)擊事件的。 利用這一個(gè)屬性,我們就可以實(shí)現(xiàn)不規(guī)則按鈕了。但是需要注意的是,使用alphaHitTestMinimumThreshold屬性需要開啟sPRite的Read/Write Enbale屬性,這樣程序就會(huì)在內(nèi)存中多存一份sprite,內(nèi)存占用也就翻了一番,所以不太適合移動(dòng)端大量按鈕的使用。 首先我們導(dǎo)入圖片資源,然后轉(zhuǎn)換成Sprite類型,這里5.5以下的版本需要再把類型改成Advanced。然后勾選Read/Write Enbale: Read/Write Enbale 然后新建一個(gè)腳本,命名為IrregularButton,打開在Awake或者Start方法中輸入如下代碼:

Image image = GetComponent<Image>(); image.alphaHitTestMinimumThreshold = 0.1f;12

代碼第一行獲取button控件的image,第二行將image的alpha閾值設(shè)置為0.1。然后我們寫一個(gè)方法,每次按下按鈕時(shí)就進(jìn)行一次計(jì)數(shù)并顯示,來測(cè)試是否按鈕為不規(guī)則按鈕。程序運(yùn)行效果如下: 運(yùn)行結(jié)果 完整的代碼: IrregularButton.cs:

using UnityEngine;using UnityEngine.UI;public class IrregularButton : MonoBehaviour { public Text text; private int count; void Awake () { // 設(shè)置閾值 Image image = GetComponent<Image>(); image.alphaHitTestMinimumThreshold = 0.1f; count = 0; } public void OnButtonClicked() { count++; text.text = "第" + count + "次按下按鈕"; }}123456789101112131415161718192021

項(xiàng)目源碼(開發(fā)環(huán)境unity3d 5.5.0f3): 百度網(wǎng)盤 提取碼:ee97


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 郎溪县| 清镇市| 离岛区| 富宁县| 囊谦县| 枣阳市| 南昌县| 鲜城| 昭觉县| 赤峰市| 秦安县| 博白县| 中西区| 大邑县| 牙克石市| 红安县| 德化县| 龙海市| 明溪县| 肇东市| 格尔木市| 漳州市| 遂溪县| 山东| 静海县| 尉氏县| 通海县| 喀喇| 景洪市| 新龙县| 广平县| 通河县| 满洲里市| 项城市| 雷州市| 桐梓县| 康乐县| 靖江市| 横峰县| 安义县| 苏州市|