原文:http://www.tasharen.com/forum/index.php?topic=6705.0
NGUI討論羣:333417608
概述
UIPanel用來收集和管理它下面所有widget的組件。通過widget的geometry創建實際的draw call。沒有panel所有東西都不能夠被渲染出來。如果你對Unity熟悉,你可以把UIPanel當做Renderer。
所有panel都有一個Depth值,會影響所有它包含的widget。如果你的UI有很多窗口,那麼最好每個窗口有一個panel。Panel上的depth權重會遠遠高於每一個widget的depth權重,所以保證panel不要使用同樣的depth。如果使用同樣的depth在panel上,那麼draw call會被自動拆分來保證渲染順序,所以會增加更多的draw call。
- Alpha屬性影響所有在panel下面的widget。所以可以用它來淡出整個窗口。
- 如果你的UI需要被燈光影響,需要勾選上Normals。
- 如果創建了一個有很多geometry的scrollable panel,你需要勾選Cull選項來減少三角形的數目。這樣也可能降低性能,因爲widget的可視性需要每次update都檢驗一次。
- 勾選Static選項來告訴NGUI這個panel下面的widget不會被移動,這樣可以提高性能。NGUI會忽略所有的position/rotation/scale改變。所以在運行時移動widget不會有效——所以小心使用。
- 如果要調試由panel創建的draw calls,Show All選項可能幫助到你。你會看到由panel創建的所有draw call,以渲染順序排序。每個draw call會包括它使用到material的詳細信息,那個widget用的這個material,甚至可以讓你關閉某些draw call來讓你查詢某些問題。
注意clipping的panel不能嵌套。每個panel只能clip自己管理的widget,如果一個panel在另外一個panel裏面,只有一個會影響到裏面的widget。這個限制以後會去掉。
默認NGUI中panel的Render Queues從3000開始往上增加。你可以通過Render Q來修改。如果你想在兩個panel中間增加粒子,只要修改兩個panel的render queue一個高於粒子,一個低於粒子即可。如果想要讓所有的draw call使用和NGUI 2.x版本的渲染方式一樣,使用z軸而不是depth。那麼給panel的Render Q指定爲Explicit。(NGUI 2.x用的是3000)。
如果你找和Anchors相關的文檔,可以看基類——UIRect。
小貼士
一個動力學Rigidbody會自動增加到你的panel上,因爲對於Unity來說這樣會提升性能。移動靜態的collider會有很多消耗性能的操作,但是移動rigidbody就不會。
類文檔
http://tasharen.com/ngui/docs/class_u_i_panel.html