UICamera-可以添加到任何相機,包含事件系統.
UICamera是每個UI的重要組成部分.它負責發送Camera中所有NGUI的活動.如果場景中僅有一個Camera,要確定它附有UICamera腳本.如果有多個相機,確定至少用來渲染UI的相機有UICamera腳本.當将這個腳本放在主相機上時,在 遊戲 場景中的所有都将有OnClick, OnHover, OnDrag等事件.

參數
Tooltip Delay:設定懸停與對象多少秒才執行OnTooltip事件.
如果使用Orthographic Projection相機,建議将相機的Size的尺寸設定為目前分辨率高度的一半.比如針對iPad的螢幕1024*768分辨率,就設定Size為384.另外一種方法是保持Size是1,縮放UI的Root為該值的倒數,比如在iPad上獲得完美尺寸你需要設定Root的縮放到1/384或者0.002604167.第二種方法比較容易實行,不過物體在場景視圖中照比其他物體會比較小.
如果你仍舊不知道怎麼設定正交相機的尺寸,那麼嘗試看看下面這圖.
UIAtlas-定義精靈的紋理圖
UIAtlas是一個容器,它包含了一堆sprite的坐标資訊.如果你不熟悉這個概念.你可以這樣認為:使用一張包含很多小貼圖的大貼圖比用若幹張小貼圖更有效率.而大貼圖中的小的貼圖被稱作為精靈(sprite),大紋理成為圖集(atlas).
你使用NGUI之前都需要建立一個圖集(或使用現有的).可以從這裡了解圖集的做法.當然也可以直接使用UITexture,但它并不能應對所有問題.
Material:是描述繪制本圖集的材料.通常推薦用unlit着色器,比如用.Unlit – Transparent Colored為NGUI.
TP Import:用于導入從TexturePacker導出的精靈.隻需要拖拽輸出的Txt檔案和所有精靈即可.
Coordinates:這允許你從基于像素的坐标系切換為基于UV的坐标系.通常都是以像素坐标系制作,但如果你需要重新調整紋理,則要先切換為紋理坐标.
New Sprite:允許已目前選擇的精靈為範本建立新的精靈.
Delete:删除所選精靈.
Sprite:可以通過下拉清單選擇所有正在使用的精靈.
Edit Name:重命名精靈的名稱.
Outer Rect:設定精靈的外邊框.
Inner Rect 設定精靈的内邊框,如果你不使用UISlicedSprite,可以跳過這個設定.
Padding:微調校正精靈的偏移量
Correction:基礎的校正精靈的坐标使用完美整數像素.
Show:檢查精靈在圖集中的位置.
提示
可以将精靈組織成組建立多個圖集.隻要圖集共享相同的材質,那麼控件仍舊會使用很少的DrawCall.
為達到最佳效果,推薦将紋理的wrap模式設定為"Clamp"和将格式設定為"Truecolor".
将類似的紋理做成一個圖集是很好的方式,但是要盡量減少同時使用的圖集數量.
如果你是使用Texture Packer工具來建立圖集,要在輸出設定中選擇Unity3D.
如果你是用Photoshop建立圖集,你能通過選擇工具配合info panel面闆來找出精靈的位置和尺寸.
UIFont-字型圖集
UIFont可以設定UI所使用的字型資料和材質.可以使用免費的BMFont,或使用更專業的Glyph Designer.一般隻做一次字型,儲存為一個預設,作為新标簽所用的字型.參數:
Import Font:用于導入Glyph Designer.或BMFont輸出的FNT(改字尾為TXT)資料.
UIAtlas:用來設定字型紋理所在的圖集,根據是否已標明UIAtlas,你會看到一下選項
如果UIAtlas已指定,你可以選擇使用字型的精靈.
如果沒有指定UIAtlas,你可以選擇用來繪制字型的材質.在NGUI中通常用"Unlit"類别下的着色器,如“Unlit – Transparent Colored".
你可以調整字型在材質紋理内的像素矩形.
快速校正完美像素坐标,四舍五入到最近的像素值.
Spacing:可以調整字元之間的間距.
Show:檢查字型在紋理貼圖中的位置.
提示
為達到最佳效果,推薦将紋理的wrap模式設定為"Clamp"和将格式設定為"Truecolor".
可以将多個字型合并為一個圖集.這樣整個UI使用這些字型,仍舊會保持一個DrawCall.
你可以給字型增加斜角,陰影,描邊等效果,隻要確定BMFont導出之前你設定好足夠的邊距和間距就可以了.
UISprite-從圖集中畫一個精靈
UISprite是第二個不常用的插件(第一個是UITexture),它唯一用途就是繪制地圖集的一部分.
參數
Transform:是很重要的一個元件,每個控件都可以通過Transform來進行位置和大小的調整.它也會影響到"Make Pixel-Perfect".你可以在它和UICamera之間任選一個來進行"完美像素"的調整.
UIAtlas:用來指定所使用的圖集.拖拽或者按下左側的按鈕選擇最近使用的圖集.
Sprite:選擇圖集中使用的精靈.選擇好精靈後.點選一下"Make Pixel-Perfect"會自動為你調整Transform的尺寸.
Depth是避免用Unity的Z排序(效率不好),而且如果你要旋轉UI視窗.單純的通過調整每個控件的Transform的Z軸來排序是不行的.是以要用這個深度來排序.
Color Tint:用來調整色調.
Make Pixel-Perfect:讓你快速調整控件的尺寸到實際像素尺寸.
Pivot:選擇部件的坐标原點位置.
Preview:預覽精靈的紋理.
提示:
如果你看到兩個控件有閃爍,意味着你設定了同樣的Depth導緻了重疊,你要調整不同的深度,讓它們不重疊.
不要把多個控件混在一起,否則會影響到完美像素這個功能.添加新控件時要注意保持建立新的子對象.
也可以在使用完美像素按鈕後再移動組合控件.
Label-用指定的字型繪制一個文本标簽
UILabel被用來顯示文字.支援多行,隻需要用"\n"換行即可.允許用[RrGgBb]來建立彩色文字.
參數:
Transform:是很重要的一個元件,每個控件都可以通過Transform來進行位置和大小的調整.它也會影響到"Make Pixel-Perfect".你可以在它和UICamera之間任選一個來進行"完美像素"的調整.
UIFont:你可以選擇用于這個标簽的字型.你可以拖拽預設或者按下按鈕選擇最近使用的字型.
可以通過使用"\n"來決定标簽是多行還是單行,同樣可以用16進制顔色值來定義彩色文字,以[RrGgBb]開始,以[-]結束.如"Hello [FF0000]World[-]!",最後的結果是World是紅色的文字.
Line Width:用來指定文字行的最大寬度,如果是單行文本則切掉超出的.如多行文本則會根據寬度自動換行.
Multi-line:選擇該項後标簽達到最大寬度後會自動換行.
Password:勾選後字元将自動轉為星号.
Encoding:勾選後會關閉特殊字元處理,一般用于輸入框.
Depth:改邊标簽控件的層級.
Color Tint:更改文本的主色調.
Make Pixel-Perfect: 讓你快速調整控件的尺寸到實際像素尺寸.
Pivot:選擇部件的坐标原點位置.
Preview:預覽精靈的紋理.
提示:
如果你看到文本閃爍或看到被其他控件覆寫了.那麼就要調整它的深度.
如果遇到複雜字元串(如斜體,标點,括号混合的)需要增加行寬度避免超寬.
用"\n"和顔色,僅一個标簽就可以做到下面的效果.
UIPanel-為控件分組,用于管理和優化DrawCalls
UIPanel用來負責建立實際的幾何體.不必特别添加UIPanel,隻要建立一個控件,它就會自動被添加.你可以建立多個Panel,用于多個菜單.
參數:
Normals:顯示法線,用來檢查UI正反是否正确.
Gizmos:用來顯示幾何體,可供選取用.
Debug:配合調試檢查場景視圖的幾何體,如果你開啟了這個.就應該取消掉上面Gizmos這個選項.
Widgets:會顯示有多少個控件在這個Panel上.
Draw Calls:可以看到用了多少個DrawCall,這個越低越好.
Clipping:可以選擇你要顯示的部分,預設是不進行裁切的.是利用着色器進行裁切的,如果開啟這個選項,NGUI将自動切換為有裁切屬性的着色器.
如果開啟裁切.你可以通過Center和Size來設定裁切盒.機關為像素.
如果選擇柔化邊緣裁切,将會有40像素的柔化邊緣供處理柔化效果.
Material:是隻讀的,可以看面闆用了多少個材質.一個材質将占用一個DrawCall.
提示:
預設情況下如果沒有UIPanel的話,會被最根的控件建立并作為其父對象.而且最好讓你多個控件都用一個父對象,便于管理.
如果Panels下沒有控件.你可以放心的删除這個面闆.
如果你删除一個存有控件的Panels,它和它下面的控件都會消失,但是當你播放時,所有控件又會重制,因為又自動建立了一個欣的UIPanel.
當沒有變化時,幾何體不會重建,這意味着如果有個完全靜止的UI,不會沒幀都去更新幾何形狀,相反它也會被重用,提高性能.
UIAnchor-能讓控件自動配合螢幕尺寸,填充滿屏和保持真實像素尺寸的UI.
UIAnchor有多種用途,其中包括在多種分辨率的螢幕的相對定位.
如果你将它放在2D UI的root上,它會自動進行完美像素處理.
如果将它用于一個對象,它将輔助對象在螢幕上的定位,比如側邊或者角落.
比如放在一個精靈上,可以用來将精靈自動填滿整個螢幕,比如做個背景.
參數:
HUD Camera是用來繪制該對象的相機,通常會自動選擇的.
Side:設定錨點,有4個邊,4個角和中心供選擇.
Half Pixel Offset:讓控件有半像素的位移以避免DirectX 9在Windows機器上的一個Bug.
Stretch To Fill:縮放填充,一般做背景時候會使用它.
Depth Offset:用于基于透視相機時調整計算點的深度.
提示:
如果對象有UIAnchor這個腳本,它自身的Transform将不接受你的修改,因為它受控于這個腳本.如果你希望添加基于這個錨點的位移,你可以添加一個子對象.比如你希望有個控件始終在螢幕偏移(100,100)這個位置,你應該在層次面闆做這樣的結構.UI->Anchor->Offset->Widget.
UIAnchor同樣可用于非正交相機.
如果UIOrthoCamera附加到相機,用UIAnchor建立的界面将固定尺寸和位置,無論你将螢幕尺寸改成多大.
Events-NGUI強大的事件系統
UIEvents-事件系統
你可以添加下面的方法腳本到控件或者帶有碰撞盒的 遊戲 對象,當然也可以賦予給相機,不過需要相機同時有UICamera腳本:
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得到觸摸或螢幕的位置
下面的腳本賦予一個碰撞器時,點選這個碰撞器會輸出HelloWorld.
原文: http://www.tasharen.com/?page_id=197
由威阿翻譯,轉載請注明來自1Vr.Cn