Unity官方博文翻譯——UGUI優(yōu)化06(系列完結(jié))

原文鏈接:https://unity3d.com/cn/learn/tutorials/topics/best-practices/other-ui-optimization-techniques-and-tips

其他UI優(yōu)化技術(shù)和提示

很多時候并沒有一個簡潔的方法來優(yōu)化UI丧荐。本章節(jié)包含了一些可能會提高UI性能的建議籍嘹,但是一些是在結(jié)構(gòu)上不簡潔的,或是難于維護(hù)鸟款,或是有一些不好的邊際效應(yīng)臂容。其他的是一些使UI初始開發(fā)變成簡單的行為的解決方案哩治,但是也會更容易造成一些性能問題猿规。

基于RectTransform的布局

Layout組件性能消耗相對昂貴,因為它們必須在其每次標(biāo)記dirty時重新計算其子元素的大小和位置(有關(guān)詳細(xì)信息尤揣,請參閱Fundamentals章節(jié)的Graphic rebuild部分)搔啊。如果給定Layout中的元素數(shù)量相對較少且數(shù)量固定,并且Layout結(jié)構(gòu)相對簡單北戏,則可以使用基于RectTransform的Layout替換Layout负芋。

通過分配一個RectTransform的錨點,RectTransform的位置和大小就能基于其父級進(jìn)行縮放嗜愈。例如旧蛾,兩個RectTransform就能實現(xiàn)一個簡單的兩列的布局:

左列的錨點應(yīng)該是X:(0,0.5)和Y:(0,1)(覆蓋左邊屏幕)

右列的錨點應(yīng)該是X:(0.5,1)和Y:(0,1)(覆蓋右邊屏幕)

RectTransform的大小和位置的計算將由Transform系統(tǒng)本身在本機(jī)代碼中驅(qū)動。這通常比依靠Layout系統(tǒng)更高效蠕嫁。編寫基于RectTransform的布局的MonoBehaviour腳本也是可以的锨天。但是,這是一項相對復(fù)雜的工作剃毒,也超出了本指南的范圍病袄。

禁用Canvas Renderer

當(dāng)顯示或隱藏一個UI分立的部分時,通常會啟用或者禁用這個UI的根游戲物體赘阀。這確保了在這個禁用的UI中沒有組件接收輸入或是執(zhí)行Unity的回調(diào)函數(shù)益缠。

然而,這也會導(dǎo)致Canvas拋棄其VBO(頂點緩沖對象)數(shù)據(jù)基公。重新啟用Canvas會使Canvas(包括所有的子Canvas)強(qiáng)制進(jìn)行rebuild和rebatch進(jìn)程幅慌。如果這種情況發(fā)生的非常頻繁,增加的CPU使用會造成應(yīng)用程序的幀率卡頓轰豆。

一種可能的方法是將UI的顯示和隱藏控制在其Canvas和子Canvas中胰伍,僅僅是啟用或者禁用關(guān)聯(lián)到Canvas或是子Canvas的Canvas Renderer組件(并不是指真的Canvas Renderer組件齿诞,而是指依賴Canvas Renderer組件的image,text等組件)骂租。

這將UI的網(wǎng)格就不會被繪制掌挚,它們將會保持駐留在內(nèi)存中,它們的原始batch將會被保存菩咨。此外,在UI的層級中將不會有OnEnable或是OnDisable回調(diào)函數(shù)執(zhí)行陡厘。

但請注意抽米,這樣的方法將不會消除GraphicRegistry中UI的圖形,所以它們?nèi)匀粫霈F(xiàn)在Graphic Raycast要檢查的組件列表中糙置。這種方法不會禁用任何隱藏UI中的MonoBehaviour腳本云茸,所以這些MonoBehaviour腳本將會接收Unity的生命周期回調(diào),比如說Update谤饭。

為了避免這個問題标捺,將以這種方式禁用的UI上的MonoBehaviour腳本不應(yīng)該直接來實現(xiàn)Unity的生命周期回調(diào)函數(shù),而是應(yīng)該通過掛載到UI根游戲物體上的“Callback Manager” MonoBehaviour腳本來接收回調(diào)函數(shù)揉抵。每當(dāng)UI被顯示和隱藏的時候亡容,就會通知Callback Manager,這會確保生命周期事件根據(jù)需要傳播或是不傳播冤今。關(guān)于Callback Manager模式的進(jìn)一步解釋超越了本指南的范圍闺兢。

分配事件攝像機(jī)

如果使用Unity的內(nèi)置Input Manager并且Canvas的渲染模式設(shè)置為World Space或是Screen Space – Camera模式,始終分別的設(shè)置事件攝像機(jī)和渲染攝像機(jī)非常重要戏罢。在腳本中屋谭,它始終作為worldCamera屬性公開。

如果這個屬性沒有設(shè)置龟糕,那么UGUI將會在掛有攝像機(jī)的游戲物體中通過主攝像機(jī)標(biāo)簽來尋找主攝像機(jī)桐磁,至少每個World Space或是Camera Space的Canvas都會發(fā)生這種查找。GameObject.FindWithTag眾所周知非常慢讲岁,所以強(qiáng)烈建議所有的World Space和Camera Space的Canvas都在設(shè)計時或初始化時設(shè)置其Camera屬性我擂。

這個問題不會發(fā)生在Overlay的Canvas上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末催首,一起剝皮案震驚了整個濱河市扶踊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌郎任,老刑警劉巖秧耗,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異舶治,居然都是意外死亡分井,警方通過查閱死者的電腦和手機(jī)车猬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尺锚,“玉大人珠闰,你說我怎么就攤上這事√北纾” “怎么了伏嗜?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伐厌。 經(jīng)常有香客問我承绸,道長,這世上最難降的妖魔是什么挣轨? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任军熏,我火速辦了婚禮,結(jié)果婚禮上卷扮,老公的妹妹穿的比我還像新娘荡澎。我一直安慰自己,他們只是感情好晤锹,可當(dāng)我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布摩幔。 她就那樣靜靜地躺著,像睡著了一般抖甘。 火紅的嫁衣襯著肌膚如雪热鞍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天衔彻,我揣著相機(jī)與錄音薇宠,去河邊找鬼。 笑死艰额,一個胖子當(dāng)著我的面吹牛澄港,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播柄沮,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼回梧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祖搓?” 一聲冷哼從身側(cè)響起狱意,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拯欧,沒想到半個月后详囤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年藏姐,在試婚紗的時候發(fā)現(xiàn)自己被綠了隆箩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡羔杨,死狀恐怖捌臊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情兜材,我是刑警寧澤理澎,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站曙寡,受9級特大地震影響矾端,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卵皂,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砚亭。 院中可真熱鬧灯变,春花似錦、人聲如沸捅膘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寻仗。三九已至刃泌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間署尤,已是汗流浹背耙替。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留曹体,地道東北人俗扇。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像箕别,于是被迫代替她去往敵國和親铜幽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,614評論 2 353