NGUI: UIPanel控件


轉自: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來讓你查詢某些問題。


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)。

假設你找和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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM