Unity3d NGUI控件知識

一、Panel
      
     更多精彩請關注:【狗刨學習網】
     1、Alpha屬性影響所有在panel下面的widget。所以可以用它來淡出整個窗口

     2、如果你的UI需要被燈光影響,需要勾選上Normals。

     3、沒有panel所有東西都不能夠被渲染出來。如果你對Unity熟悉,你可以把UIPanel當做Renderer

     4、Panel會根據dimensions自動Clip所有它的子節點。使用這個功能需要選擇Clipping下拉列表中的任意選項,之後調整Scene View中紫色矩形的尺寸,就像調整widget的尺寸一樣。通過這樣做你可以把一個panel放到Scroll View中,讓他輕鬆的拖拽。

     5、一個動力學Rigidbody會自動增加到你的panel上,因爲對於Unity來說這樣會提升性能。移動靜態的collider會有很多消耗性能的操作,但是移動rigidbody就不會。

二、Camera

     1、UICamera真正做的事情是發送NGUI事件給所有被當前camera渲染的object,camera是UICamera腳本所在的那個。 其實這個腳本做的事情和UI無關。事實上如果你想讓遊戲裏面的object接收OnPress、OnClick、OnDrag等這類事件,你需要把UICamera掛在你的主相機上

     2、UICamera的選項Event Type用來決定腳本如何排序mouse或者touch觸發的事件。如果是UI模式,這些事件順序基於widget的depth——和渲染順序一樣。如果UICamera掛到了Main Camera上,那麼就需要把這個選項修改成World模式。這樣就會根據與相機的距離來排序點擊到的object。

     3、Event Mask用來決定哪些層會接收事件。大多數情況下你需要的就是“Everything”,這個值會與UnityEngine.Camera's Culling Mask進行邏輯與運算,有需要的話你可以微調這個值。如果你修改了UI的game object的Layer,記得調整Event Mask,否則你可能會發現UI不響應事件。

     4、Allow Multi-Touch選項用來控制是否支持多點觸碰。如果勾選掉,多點觸碰也會當做單點觸碰。
小貼士

     UICamera發送以下事件給collider:

  • OnHover (isOver) 發送時機爲鼠標懸停(只觸發一次)或者離開collider。
  • OnPress (isDown) 發送時機爲鼠標在collider上按下。
  • OnSelect (selected)發送時機爲鼠標點擊和鬆開的時候都在同一個object上。
  • OnClick ()發送時機和OnSelect一樣,但是要求鼠標沒有移動特別多。UICamera.currentTouchID表示按下的鼠標哪個鍵。
  • OnDoubleClick ()發送時機爲當在四分之一秒內click兩次的時候。UICamera.currentTouchID表示按下的鼠標哪個鍵。
  • OnDragStart ()發送時機爲OnDrag()事件之前。
  • OnDrag (delta) 發送時機爲一個object被拖拽。
  • OnDragOver (draggedObject)發送時機爲其他的object拖拽到他的上面。
  • OnDragOut (draggedObject)發送時機爲其他的object拖拽出他的上面。
  • OnDragEnd ()發送時機爲drag事件結束。發送給被拖拽的object。
  • OnInput (text)發送時機爲輸入的時候(在點擊選擇了一個collider之後)。
  • OnTooltip (show) 發送時機爲鼠標懸停在一個collider上一段時間沒有移動。
  • OnScroll (float delta)發送時機爲鼠標滾輪滾動。
  • OnKey (KeyCode key)發送時機爲鍵盤或者輸入控制器被使用的時候。

三、UIGrid

     1、Arrangement的值決定了子節點的擺放位置。Horizonta讓子節點向右排列,Vertical向下排列。

     2、Max Per Line屬性控制Horizontal排列時候的最大有多少列, Vertical排列的時候最大有多少行。

     3、Cell Width和Height決定了所有條目的間隔。

四、UILabel

     1、修改Pivot來改變label的對齊方式。Top-left、Left和Bottom-left是左對齊。Top、Center或者Bottom是中間對齊。Top-right、Right、Bottom-right是右對齊。

     2、Overflow操作讓你決定lable的文本超過允許的空間之後的處理方法。
  • Shrink Content 內容自動縮放。與Keep Crisp設置一起來控制Dynamic字體,使字體的字號變小而不是簡單的縮放。這樣不管label是否被縮放都能保持清晰。
  • Clamp Content 剔除多餘的文本。
  • Resize Freely 根據輸入的文本內容自動調整dimension。不需要手動調整。
  • Resize Height 保持寬度不變,必要時增加高度。

     3、文本可以有shadow或者outlineEffect。shadow會使用兩倍的geometry,outline會使用五倍——所以要小心這個屬性。Distance參數控制shadow或者outline與原文本的距離,以像素爲單位。

     4、運行時修改文本,你可以通過以下方法:
     
      UILabel lbl = GetComponent<UILabel>();

      lbl.te   xt = "Hello world!";


注意事項     1.UILabel彩色字標籤失靈

       A:有時候會發現UILabel的[ffffff][-]這樣的色彩標籤突然不起作用了,那你要檢查一下是不是Widget的Color設置了顏色,改成白色就正常了!

     2.Encoding屬性不見了


       A:是的,新版本中Encoding屬性取消了,取而代之的是BBcode!
五、Button

      1、Button組件可以掛在任何有collider的game object上。不需要一定掛在widget上。

      2、渲染掛着Button組件物體的攝像機,需要有UICamera組件,這樣Button的各種事件才能生效,因爲所有事件是由UICamera發出的

      3、Button接收鼠標hover、press和click事件,然後修改Target屬性的顏色。Target通常是widget(sprite、label或者texture),但是也可以是有Light組件的物體,或者是Renderer。
小貼士

      通常把Button組件放在按鈕的背景sprite上。快捷鍵ALT+SHIFT+C快速添加collider,之後勾選sprite的”Box Collider“選項,這樣box collider就可以自動縮放到和sprite大小一樣。

六、UISprite

     1、Sprite TypeFilled,這樣可以做一個類似冷卻的進度條。

     2、Sprite TypeTiled,這樣你的sprite會重複的填充一塊區域。儘量不要用太小的sprite因爲這樣會創建很多的三角形。給你的sprite一個1像素的border也是個好主意,這一個像素會被排除掉(所有tiled的圖的邊緣看起來就銜接起來一樣)。

      3、Sprite TypeSliced就可以創建一個9-slicing的sprite。只有指定了Border後它纔會真正起作用。(點擊上面提到的Edit按鈕)。sliced sprite的一個應用就是做按鈕的背景。

      4、使用”Make Pixel-Perfect“選項(新版本是Snap)來讓UISprite 使用它的原始尺寸。就是如果你的原始texture是300*200的像素,UISprite的dimensions對應的width和height就會調整到這個數值。 注意這個對Tiled和Sliced sprite沒有效果——它們有自己的規則。

      5、Tiled Sprite會自動平鋪到整個精靈的大小內,適合使用無縫貼圖製作背景。

      6、Sliced Sprite填充完整個的Sprite區域,固定大小,不會隨圖片大小而改變。(有人說這個適合用來作角色的頭像顯示)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章