NGUI對遊戲裡各種常見UI效果的實現總結
根據NGUI的範例,現在專案裡的效果實現以及網上搜索總結如下:
1.主角生命值降到很低時,螢幕的血紅色閃爍效果。
給螢幕上紅色的sprite附上tween color元件,調整duration時間以及from和to中的顏色值和透明度,更改playStyle為loop或者pingpong即可。觸發事件用指令碼控制,這裡有兩種思路:一是把整個gameobject的enable設定為true或者false,tweencolor元件為預設播放狀態,
這樣控制gameobject的enable為true或false即可實現是否出現閃爍。二是加上playTween指令碼,然後在面板上設定觸發條件,兩種方法看實際情況決定用哪個。
2. NGUI層上顯示幀動畫
兩種方案:一是把要做成動畫的所有sprite單獨分割然後打包成Atlas,在指令碼中根據時間制定sprite的atlas以及spritename 即可實現幀動畫。如程式碼
第二種方法是用unity新增的2D動畫機制來做,這種在處理圖的時候會簡單一些。無論是所有幀動畫素材都放在一張大圖裡,還是單獨切割出來的一張張小圖都可以。將圖片匯入到unity中,選擇圖片的TextureType為sprite,如果是很多小序列幀合併在一起的大圖,再選擇SpriteMode
為Multiple,點選SpriteEditor進入編輯介面具體調整即可,這樣在大圖的底下會出現很多小圖子物件,
與NGUI控制元件的顯示順序發生變化,得用指令碼顯示的控制其渲染順序,現成的指令碼是renderQueueModifier,選擇好目標,調節位置選項即可,特別注意的是,動畫物件的Layer一定得選擇為NGUI相機所處在的層上,不然是無法顯示的。
3.NGUI上顯示粒子效果,並調整大小
如何在NGUI上顯示粒子效果參見第2顯示動畫,大小的調節通過ParticleScaler這個指令碼實現,在面板中調節其引數即可
4.進度條滾動效果
具體實現參見SliderAnimation,也可以用2中的幀動畫思路來做。也就是說用NGUI做動畫的兩種方法(不是2提到的):一是用陣列來儲存所有的序列幀圖片,再每幀控制其顯隱即可。二是隻儲存一張圖,在腳本里改變其atlas以及spriteName即可。在空間利用上來說,顯然是二比較好。
5.頭頂浮動的傷害數字類似效果
6.揹包類效果,即可拖動,交換物品
7.tooltip效果
8.震屏效果
9.小地圖製作
10.任務面板效果,就是點選到具體任務出現詳細描述面板,點選別的切換到相應描述,再次點選收縮回來。部分實現效果參見NGUI Examples中的QuestLog這個示例.
12. 選人介面效果,如點選下一個時人物框會輪流的滑動展示。
13.類似QQ的聊天對話方塊,底下輸完提交到上面的視窗中
14.NGUI常用指令碼用途
一。UIDragObject : 使控制元件面板等能被拖動