本節書摘來自華章社群《unity開發實戰》一書中的第3章,第3.9節滑鼠懸停時高亮顯示材質,作者 (愛爾蘭)matt smith (巴西)chico queiroz,更多章節内容可以通路雲栖社群“華章社群”公衆号檢視
3.9 滑鼠懸停時高亮顯示材質
高亮對象是讓玩家知道這個對象可以互動的最有效的方式。在拼圖遊戲和點選式冒險遊戲中很有用,3d使用者界面中也可以用。
3.9.1 準備工作
本節中需要一個 3d 模型和一個 2d 紋理貼圖,也可以直接導入0423_03_08檔案夾中名為highlight的包。
3.9.2 操作步驟
請按照下面的步驟實作滑鼠懸停時高亮材質:
1)導入包,并打開highlightscene 場景。
2)在hierarchy 視圖中,選擇 3d 對象讓其高亮(名為highlightcube)。
3)在 inspector 視圖中,應該會顯示這個對象的材質,使用shader的下拉菜單把值從diffuse修改成vertexlit。
4)把basebox 紋理應用到材質的base紋理。
5)注意 vertexlit 着色器有一個屬性叫做emissive color,預設是black。如果想預覽其變化,可以修改成green(但要記得改回來)。
6)在project視圖中,通過下拉菜單建立一個c#腳本,命名為highlightobject 然後打開。
7)替換成下面的代碼:

10)通過component | physics | box collider 添加一個盒子碰撞器(box collider )到 highlightcube對象上。
11)測試場景。盒子應該會在滑鼠懸停時高亮(點選時更亮)。
3.9.3 實作原理
box collider 通過盒子探測滑鼠指針,像改變發光色值的觸發器一樣工作。mouseon 布爾變量用于探測滑鼠按鈕在box collider上是否松開,并相應地修改其顔色。
3.9.4 更多内容
可以用其他shaders實作更多有意思的東西,但是一定要修改特定的材質屬性。
高亮自發光着色器
如果在腳本中把_emission 替換成 _color自發光着色器就會工作了。
使用透明着色器
透明着色器(transparent shaders)也是一個有意思的東西。可以通過修改main color的alpha值而達到修改透明度的目的(應該在腳本中的_color相關的代碼中)。