【Unity】【組件】UGUI文字陰影、漸變、描邊
????????由于策劃們經(jīng)常需要給文字添加描邊的效果,以防止文字看不清或者用來(lái)強(qiáng)調(diào)一些文字。之前一直用的都是Unity自帶的Outline組件實(shí)現(xiàn)文字描邊,在效果和性能上都很差。而如果使用TextMeshPro的話,又需要對(duì)每種語(yǔ)言都做資源,會(huì)多出很多工作量,并增加包體。所以需要另尋方法實(shí)現(xiàn)一個(gè)文字描邊的組件。
????????在網(wǎng)上找了一圈,感覺(jué)用Shader實(shí)現(xiàn)挺符合需求,但一般用于Mesh描邊的Shader又用不了,變成了一個(gè)方框描邊,推測(cè)是Unity先對(duì)于文字形狀進(jìn)行了處理,計(jì)算并生成了一張文字圖案的UV,然后將UV應(yīng)用在一個(gè)面片上,這樣就減少了最終顯示在畫(huà)面上的面數(shù)和定點(diǎn)數(shù)。而這些文字形狀的頂點(diǎn)數(shù)據(jù)則是以UIVertex類(lèi)型存在。

????????又找了一圈,找到兩篇不錯(cuò)的文章:
《基于Shader實(shí)現(xiàn)的UGUI描邊解決方案》(https://www.cnblogs.com/GuyaWeiren/p/9665106.html)
《【unity shader】基于UGUI字體的outline優(yōu)化》(https://blog.csdn.net/HelloCLanguage/article/details/105836309)
????????于是就用最樸素的編程方法拿來(lái)改了改,目前實(shí)現(xiàn)的功能有:
文字陰影
文字、陰影描邊
文字、陰影漸變(可透明,只能雙色)
????????并添加了共用材質(zhì)和保存為預(yù)制體后打開(kāi)顯示異常的問(wèn)題的解決。

????????使用方法:把腳本添加到Text組件節(jié)點(diǎn)上即可。
注:如果顯示異常請(qǐng)檢查Canvas的Additional Shader Channels中的TexCoord1,2,3通道是否打開(kāi)。
腳本代碼:
Shader代碼: