我的環境配置:Windows 10、Unity 5.3.4f1。
2016.11.17 更新:修正邊緣無法正常繪圖問題,以及挖空的位置無法重疊問題。
相信大家都有製作過 "新手教學" 之類的功能吧!
大家的作法可能都是這樣
在原畫面上加入一張滿版的半透明黑色底圖,然後把想要突顯的地方挖空,再用個箭頭表示,好讓使用者可以注意到。
但是這作法很繁瑣,因為每一個步驟都需要美術出圖,每一張圖都要討論好挖空的位置跟尺寸,只要步驟、位置、尺寸有更動,美術就要再重新出圖,非常的麻煩且佔容量!
還有最讓人傷心的地方...就是這教學只會出現一次,而 99.99% 的使用者都會選擇跳過,可偏偏這項功能又不能夠省略!
所以這邊我想讓程式自己去建立遮罩圖片,如此一來美術就不需要出圖了,而程式也可以自由的控制需要挖空的位置與尺寸,不但可以省下很多麻煩,還可以大大的節省容量!
前提:我的建立遮罩演算法並不算好,只是勉強堪用而已,歡迎大家提出更好的方法喔!
而我把建立遮罩的功能拆成好幾個步驟,雖然這會降低效能,但卻可以讓大家容易明白它的運作架構,以及方便繼承後去做修改或延伸!
建立遮罩圖片的腳本就在文章最下方,需要的人可直接下載使用。
這邊我簡單的做個說明以及範例:
我把流程拆成這些步驟
一、建立底圖 CreateTexture()
二、裁剪出遮罩範圍,但只是裁剪出四分之一的區塊,目的是降低運算量 ClipMask()
三、將裁剪出的範圍填滿,一樣只填滿這四分之一的區塊 DrawFull()
四、計算出這漸層效果,一樣只計算這四分之一的區塊 Gradients()
五、將這四分之一的區塊複製到區塊上,這樣就完整囉! Copy()
六、將結果覆寫到圖片上,完成! Apply()
其實步驟二到步驟五,都是不會將結果覆寫到圖片上的,必須執行步驟六的方法後,才會覆寫到圖片上。
這邊只是為了方便大家看得明白而已,所以記得一定要執行步驟六的方法!
該腳本擁有幾項基本的變數可以調整
ColorBackground:底圖的背景色,這邊顏色預設為透明度 80% 的黑色。
ColorMask:裁剪出來的區塊顏色,這邊顏色預設為全透明的黑色。
AryRect:總共要裁剪出幾塊區塊,這裡可以隨意設定位置與尺寸,但是效果不疊加。
Gradients:漸層效果的程度。
Rounded:圓角矩形的圓角程度。
這邊有一點要注意,AryRect 這個位置是為圖片左下角為起始點,所以記得自己先換算座標再使用。
若 AryRect 不想填也可以,有提供 AddMask() 的方法,可以動態裁剪,不過記得先自己換算座標後再使用。
PS:裁切的尺寸,建議為 2 的倍數。
裁剪多塊區塊效果
各裁切腳本效果:
TextureMask.cs 基本矩形
TextureMask_RoundedRectangle.cs 圓角矩形
TextureMask_Circle.cs 圓形
使用方式,直接將腳本拖曳到物件上就可以了!
下面提供的範例,可直接點選畫面,程式會直接在點選的位置上動態裁剪出一個區塊。
這邊可以參考看看 TestMask.cs 這支腳本,裡面擁有簡單的座標轉換寫法以及動態裁剪的使用。
腳本下載:https://drive.google.com/file/d/0B0QPre3qvuw-YUlyT1hHWkt2OUU/view?usp=sharing&resourcekey=0-aqjVzCxmO3uduF82GQ1fOg
範例下載:https://drive.google.com/file/d/0B0QPre3qvuw-SUlJQjRLQUZGNkk/view?usp=sharing&resourcekey=0-27T_SwqEnqqLJDb8vmQF6Q
留言列表