轉(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:
然后新建一個(gè)腳本,命名為IrregularButton,打開在Awake或者Start方法中輸入如下代碼:

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

項(xiàng)目源碼(開發(fā)環(huán)境unity3d 5.5.0f3): 百度網(wǎng)盤 提取碼:ee97
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注