參考:http://forum.exceedu.com/forum/forum.php?mod=viewthread&tid=33091&extra=page%3D1php
1、Panelweb
一、Alpha屬性影響全部在panel下面的widget。因此能夠用它來淡出整個窗口ide
二、若是你的UI須要被燈光影響,須要勾選上Normals。性能
三、沒有panel全部東西都不可以被渲染出來。若是你對Unity熟悉,你能夠把UIPanel當作Renderer學習
四、Panel會根據dimensions自動Clip全部它的子節點。使用這個功能須要選擇Clipping下拉列表中的任意選項,以後調整Scene View中紫色矩形的尺寸,就像調整widget的尺寸同樣。經過這樣作你能夠把一個panel放到Scroll View中,讓他輕鬆的拖拽。字體
五、一個動力學Rigidbody會自動增長到你的panel上,由於對於Unity來講這樣會提高性能。移動靜態的collider會有不少消耗性能的操做,可是移動rigidbody就不會。spa
2、Cameracode
一、UICamera真正作的事情是發送NGUI事件給全部被當前camera渲染的object,camera是UICamera腳本所在的那個。 其實這個腳本作的事情和UI無關。事實上若是你想讓遊戲裏面的object接收OnPress、OnClick、OnDrag等這類事件,你須要把UICamera掛在你的主相機上orm
二、UICamera的選項Event Type用來決定腳本如何排序mouse或者touch觸發的事件。若是是UI模式,這些事件順序基於widget的depth——和渲染順序同樣。若是UICamera掛到了Main Camera上,那麼就須要把這個選項修改爲World模式。這樣就會根據與相機的距離來排序點擊到的object。對象
三、Event Mask用來決定哪些層會接收事件。大多數狀況下你須要的就是「Everything」,這個值會與UnityEngine.Camera's Culling Mask進行邏輯與運算,有須要的話你能夠微調這個值。若是你修改了UI的game object的Layer,記得調整Event Mask,不然你可能會發現UI不響應事件。
四、Allow Multi-Touch選項用來控制是否支持多點觸碰。若是勾選掉,多點觸碰也會當作單點觸碰。
小貼士
UICamera發送如下事件給collider:
3、UIGrid
一、Arrangement的值決定了子節點的擺放位置。Horizonta讓子節點向右排列,Vertical向下排列。
二、Max Per Line屬性控制Horizontal排列時候的最大有多少列, Vertical排列的時候最大有多少行。
三、Cell Width和Height決定了全部條目的間隔。
4、UILabel
一、修改Pivot來改變label的對齊方式。Top-left、Left和Bottom-left是左對齊。Top、Center或者Bottom是中間對齊。Top-right、Right、Bottom-right是右對齊。
二、Overflow操做讓你決定lable的文本超過容許的空間以後的處理方法。
三、文本能夠有shadow或者outlineEffect。shadow會使用兩倍的geometry,outline會使用五倍——因此要當心這個屬性。Distance參數控制shadow或者outline與原文本的距離,以像素爲單位。
四、運行時修改文本,你能夠經過如下方法:
UILabel lbl = GetComponent<UILabel>();
lbl.text =
"Hello world!"
;
5、Button
一、Button組件能夠掛在任何有collider的game object上。不須要必定掛在widget上。
二、渲染掛着Button組件物體的攝像機,須要有UICamera組件,這樣Button的各類事件才能生效,由於全部事件是由UICamera發出的
三、Button接收鼠標hover、press和click事件,而後修改Target屬性的顏色。Target一般是widget(sprite、label或者texture),可是也能夠是有Light組件的物體,或者是Renderer。
小貼士
一般把Button組件放在按鈕的背景sprite上。快捷鍵ALT+SHIFT+C快速添加collider,以後勾選sprite的」Box Collider「選項,這樣box collider就能夠自動縮放到和sprite大小同樣。
6、UISprite
一、Sprite Type爲Filled,這樣能夠作一個相似冷卻的進度條。
二、Sprite Type爲Tiled,這樣你的sprite會重複的填充一塊區域。儘可能不要用過小的sprite由於這樣會建立不少的三角形。給你的sprite一個1像素的border也是個好主意,這一個像素會被排除掉(全部tiled的圖的邊緣看起來就銜接起來同樣)。
3、Sprite Type爲Sliced就能夠建立一個9-slicing的sprite。只有指定了Border後它纔會真正起做用。(點擊上面提到的Edit按鈕)。sliced sprite的一個應用就是作按鈕的背景。
四、使用」Make Pixel-Perfect「選項(新版本是Snap)來讓UISprite 使用它的原始尺寸。就是若是你的原始texture是300*200的像素,UISprite的dimensions對應的width和height就會調整到這個數值。 注意這個對Tiled和Sliced sprite沒有效果——它們有本身的規則。
五、Tiled Sprite會自動平鋪到整個精靈的大小內,適合使用無縫貼圖製做背景。
六、Sliced Sprite填充完整個的Sprite區域,固定大小,不會隨圖片大小而改變。(有人說這個適合用來做角色的頭像顯示)
小結
UIEvents-事件系統
void OnHover (bool isOver):當鼠標移出或者懸停在某個碰撞器上的時候返回布爾值.在觸摸設備上不會有做用.
void OnPress (bool isDown):當鼠標或者觸摸到碰撞器發生布爾值返回.
void OnSelect (bool selected):當鼠標或者觸摸從OnPress發生後的釋放將會返回這個布爾值.
void OnClick():和OnSelect的產生條件相同,當點擊或觸摸碰撞器而且沒有發生拖拽時候觸發.
void OnDrag (Vector2 delta):當移動鼠標或者觸摸按下時候位移超過特定閥值時觸發.
void OnDrop (GameObject drag):當鼠標或觸摸釋放於從發生OnDrag的不一樣碰撞器傷觸發.傳遞的參數是產生OnDrag的遊戲對象.
void OnInput (string text):當一個OnSelect發生後在同一個碰撞器上觸發輸入.通常只有UIInput用它.
void OnTooltip (bool show):當鼠標懸停超過tooltipDelay時間後觸發該命令.觸摸設備上不會有做用.
能夠用UICamera.lastCamera找到誰發出的事件,可用UICamera.lastHit獲得誰接受這個事件,以及用UICamera.lastTouchPosition獲得觸摸或屏幕的位置