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

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

項目源碼(開發環境unity3d 5.5.0f3): 百度網盤 提取碼:ee97
新聞熱點
疑難解答