轉自:http://blog.csdn.net/huang9012/article/details/19411703
http://bbs.9ria.com/thread-417659-1-1.html
NGUI官方文檔:http://tasharen.com/ngui/docs/annotated.html
概述
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下拉列表中的隨意選項,之后調整Scene View中紫色矩形的尺寸。就像調整widget的尺寸一樣。通過這樣做你能夠把一個panel放到Scroll View中,讓他輕松的拖拽。
注意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
............................................................完美的切割線........................................................................
UIPanel的一些小知識
UIPanel用來收集和管理它以下全部widget的組件。通過widget的geometry創建實際的draw call。沒有panel全部東西都不可以被渲染出來,你可以把UIPanel當做Renderer。
假設創建了一個有非常多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來讓你查詢某些問題。
Panel會依據dimensions自己主動Clip全部它的子節點。使用這個功能須要選擇Clipping下拉列表中的隨意選項,之后調整Scene View中紫色矩形的尺寸。就像調整widget的尺寸一樣。
通過這樣做你能夠把一個panel放到Scroll View中,讓他輕松的拖拽。
注意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)。
小貼士
一個動力學Rigidbody會自己主動添加到你的panel上。由於對於Unity來說這樣會提升性能。
移動靜態的collider會有非常多消耗性能的操作,可是移動rigidbody就不會。
上面關於UIPanel知識參考於此鏈接:http://www.tasharen.com/forum/index.php?topic=6705.0