NGUI整體框架介紹

????????NGUI作為Unity的一個UI工具螟凭,從Unity開始時就跟著迭代發(fā)展虚青。到現(xiàn)在,最新版本已經(jīng)是NGUI Next Gen UI v3.12.1螺男。再Unity自身的UI工具也就是UGUI還沒有的時候棒厘,NGUI可以說是Unity程序必會的一個插件。就算是UGUI出現(xiàn)烟号,也不能掩蓋NGUI的光芒绊谭,而且眾所周知,NGUI的作者還是UGUI的開發(fā)者之一汪拥。

? ? ? ? 這篇文章只是對NGUI做一個整體的介紹达传,至于詳細(xì)的深入將在之后的文章中進(jìn)行。

? ? ? ? NGUI主要分為四個部分迫筑。一個UI宪赶,一個動畫(Tween),一個交互方面的代碼比如UIGrid脯燃、UITable搂妻、UIScrollView之類,還有一個就是核心代碼模塊也就是底層支持辕棚。這四個部分就是我們主要要研究的方向欲主。其他如shader、editor代碼則是沒有太大關(guān)聯(lián)逝嚎。

gnui目錄結(jié)構(gòu)

?當(dāng)你在Unity中創(chuàng)建第一個UISprite或者其他物體時扁瓢,你就會發(fā)現(xiàn),你創(chuàng)建的不僅僅是一張UISprite补君。它還包括uiRoot跟一個camera引几,這只在第一次的時候創(chuàng)建,而我們創(chuàng)建的Sprite就在uiroot下面挽铁。NGUI的所有面板都是以Panel作為分割伟桅。這是因為NGUI自身的機(jī)制所需敞掘。 因此UIRoot本身便附加了一個UIPanel組件。

根目錄

? ? ????UI方面來說楣铁,NGUI主要提供了UIRoot, UIRect, UISprite玖雁,UILabel,UIAtlas, UIFont, UILocalize, UITextList, UITexture等等

?UI方面來說民褂,最主要的應(yīng)該就是圖片的顯示了疯潭。NGUI提供了UIAtlas作為游戲內(nèi)精靈圖片(UISprite)的主要提供者竖哩。一個圖集的描述文本(即圖中的TP Import),UIAtlas提供一個材質(zhì),材質(zhì)需要一個貼圖,這張貼圖包含我們所需要的一些同一類型的哭当,或者同一頁面的圖素。貼圖盡量使用2的n次方的分辨率大小,這樣運(yùn)行效率更高。其一是壓縮過后包體會比不是2的n次方的小,其二是加載也更快偿渡。不是2的n次方的圖片质帅,unity會將其轉(zhuǎn)化為一個非壓縮RGBA32位的格式。

圖集Inspector面板
圖集-貼圖

? ? ? ? NGUI作為Unity最常用的UI編輯工具。提供了很多基本的功能。其中最基礎(chǔ)的就是Sprite精靈圖片驼仪。那么NGUI的精靈圖片在哪里呢。就在這Atlas的這張貼圖里面驻仅,這張集合了所有我們分類并打包好的圖片谅畅,我們稱之為“圖集”。而它的切割信息則保存在對應(yīng)的.txt文檔中噪服。大概是下面這張圖里面的效果毡泻。里面保存這整張圖集里面每個單獨的圖片的id、高寬以及偏移量粘优。UIAtlas正是根據(jù)這些信息提取對應(yīng)的精靈圖片仇味。

圖集-文本信息

? ? ? ?NGUI的文本顯示主要靠UILabel這個組件,而文字的話雹顺,依靠的時UIFont這個組件丹墨。顯示文字只需要簡單的在UIlabel的輸入框輸入文本即可。UIlabel本身支持改變顏色等行為嬉愧,順帶提一嘴贩挣,修改文字的方式有兩種,其一為直接改顏色,其二為使用bbcode王财。直接修改顏色的話卵迂,只需要在UILabel的Inspector面板中點擊顏色然后選擇需要的顏色值即可。bbcode則需要查詢對應(yīng)顏色的顏色代碼進(jìn)行賦值绒净。

? ? ? ? 如果只是做國內(nèi)游戲的話见咒,當(dāng)然使用中文就夠了。但是現(xiàn)在的游戲一般都有海外版挂疆。因此多語言的控制就非常的重要改览。NGUI提供了一個名為UILocalize的腳本控制,不過不是很常用缤言,一般都是公司自己寫的多語言工具宝当。從初始化多語言到保存到賦值都有自己的一整套完整的流程。

UITween

UITween的使用非常的簡單墨闲,都是大同小異今妄。NGUI包含的動畫分別為:

TweenHeight 做UISprite等這些有明確邊框的物體的height屬性做動畫。提供目標(biāo)物體鸳碧,最終高度跟動畫時間即可

TweenPosition,這個則是位移動畫犬性。提供目標(biāo)物體和最終的目的坐標(biāo)跟動畫時間

TweenRotation瞻离,旋轉(zhuǎn)動畫,提供目標(biāo)的軸向乒裆、目標(biāo)值以及動畫時間套利。這個需要注意的是萬向鎖問題,不然很難達(dá)到自己要的效果鹤耍。

TweenAlpha肉迫,這個是做Alpha動畫的,同樣是提供目標(biāo)物體稿黄,最終alpha跟時間

TweenScale喊衫, 這個是做縮放動畫,同樣是提供目標(biāo)物體杆怕,最終的scale值跟動畫時間族购。

其他動畫都是差不多,只需要提供目標(biāo)物體陵珍,提供正確的值跟時間即可寝杖。需要主要的是,這些動畫在物體未激活的情況下是不會運(yùn)行的互纯。所以如果需要的話瑟幕,需要正確的停止跟開啟,否則會容易出現(xiàn)再次打開頁面動畫卻從中間開始播放之類的問題。

Internal

Internal中包含了許多的擴(kuò)展的不屬于UI的東西只盹。比如事件的響應(yīng)腳本EventTrigger亿卤,如果需要響應(yīng)按鈕點擊時間什么的,都可以掛載這個組件鹿霸,這個組件上面明確了單擊排吴、雙擊、拖拽等事件的響應(yīng)事件懦鼠,我們只需要綁定我們的ui钻哩,就可以正常的使用。

eventtrigger事件

? ? ? ? UIDragCall 是NGUI非常終于的一個組件肛冶,整個UI的渲染都是靠它街氢,作用不言而喻。uidrawcall的數(shù)量跟性能是成反比的睦袖。也就是drawcall越多珊肃,性能越差。而uidrawcall的生成在uipanel中馅笙,里面粗暴的根據(jù)sprite的depth進(jìn)行生成伦乔。因此我們在創(chuàng)作UI界面的時候需要格外注意,盡量控制同一個圖集的sprite的depth是相連的董习,這樣就會將其分配到同一個drawcall中烈和。當(dāng)然,有時候故意分開皿淋,然后夾雜一些特效什么的也是有這種操作的招刹。

? ? ? ? UIRect是NGUI所有顯示的組件的基類,可見其重要性窝趣。UIWidget是UIRect的一個子類疯暑。它只是一個簡單的透明矩形,有時候需要透明的但是可以點擊的地方就可以用到它哑舒。而且作為一個父節(jié)點妇拯,可以很方便的控制自己及以下的物體的整體透明度,配合TweenAlpha簡直不要太好用散址。

? ? ? ? SpringPanel是作為一個緩沖移動的腳本乖阵。它類似與TweenPosition,但是不同之處在于预麸,它是配合其他組件瞪浸,比如UIScrollView、UIWrapContent使用的吏祸,它可以將一個物體緩慢的移動到目標(biāo)位置对蒲。

Interaction

? ? ? ? 這個文件夾中包含的腳本都是需要跟其他組件共同配合使用的钩蚊。比如使用UIScrollView的時候,就需要Panel來控制是否切割蹈矮,移動事件的響應(yīng)砰逻,UITable或者UIGrid的排序,或者UIWrapContent的回收等等泛鸟。這個文件夾中的組件各種搭配方式能組合出許多不同的卻又很好用的功能蝠咆。例如我們需要做一個背包,那么背包的滑動就需要UIScrollView跟UIDragObject北滥, 那么排序就需要用到UITable或者UIGrid刚操。



第一次寫,內(nèi)容比較亂再芋,見諒個~菊霜。接下來會開始仔細(xì)介紹各個常用組件的使用,夾雜一些例子

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末济赎,一起剝皮案震驚了整個濱河市鉴逞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌司训,老刑警劉巖构捡,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異豁遭,居然都是意外死亡叭喜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蓖谢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人譬涡,你說我怎么就攤上這事闪幽。” “怎么了涡匀?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵盯腌,是天一觀的道長。 經(jīng)常有香客問我陨瘩,道長腕够,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任舌劳,我火速辦了婚禮帚湘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甚淡。我一直安慰自己大诸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著资柔,像睡著了一般焙贷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贿堰,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天辙芍,我揣著相機(jī)與錄音,去河邊找鬼羹与。 笑死故硅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的注簿。 我是一名探鬼主播契吉,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诡渴!你這毒婦竟也來了捐晶?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤妄辩,失蹤者是張志新(化名)和其女友劉穎惑灵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體眼耀,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡英支,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了哮伟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片干花。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖楞黄,靈堂內(nèi)的尸體忽然破棺而出池凄,到底是詐尸還是另有隱情,我是刑警寧澤鬼廓,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布肿仑,位于F島的核電站,受9級特大地震影響碎税,放射性物質(zhì)發(fā)生泄漏尤慰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一雷蹂、第九天 我趴在偏房一處隱蔽的房頂上張望伟端。 院中可真熱鬧,春花似錦萎河、人聲如沸荔泳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玛歌。三九已至昧港,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間支子,已是汗流浹背创肥。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留值朋,地道東北人叹侄。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像昨登,于是被迫代替她去往敵國和親趾代。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容