注意:本文翻译时NGUI版本已经更新到3.0.7
原文地址:http://www.tasharen.com/forum/index.php?topic=6705
总览
UIPanel是一个保存并管理它下面所有挂件的组件。UIPanel负责通过挂件的几何结构创建真正的draw call。如果没有Panel,没有任何东西能被绘制出来。如果你熟悉Unity,你可以把UIPanel看成是一个Renderer。
UIPanel继承了它的子类UIRect所有功能。
所有Panel都一个Depth值影响着他下面的所有挂件。如果你正在创建一个使用多个窗口的复杂UI,通常最好的做法是每个窗口有一个UIPanel。请确认你的panel不会拥有相同的depth值。如果这个值是一样的,为了保证绘制顺序,draw call将会开始频繁分割,这将导致产生比平常更多的draw call。
- Alpha 属性影响它下面的所有的挂件。用它来实现整个窗口的淡出是不错的方式。
- 如果你的UI受灯光影响,请确认你勾选了Normals复选框
- 如果你正在创建一个可滚动的panel,它里面有大量几何图形,你可能应该勾选Cull选项去减少三角形面数。注意这么做实际可能会降低性能,因为它会在每个update都检查挂件的可见性!
- 勾选Static复选框会告诉NGUI这个Panel下面的挂件不需要移动从而提高性能。NGUI会忽略检查position/rotation/scale的变化。注意这么做意味着在运行时移动挂件不会有任何效果——不过还是要注意。
- 如果你想要调试panel创建的draw call,Show All选项会帮到你。这么做将让你看到由NGUI Panel创建的所有draw call。每个draw call显示的详细信息包括了使用的材质,由哪个挂件产生的,设置让你选择draw call关闭来帮助你观察会发生什么。
如果你正在寻找关于Anchors部分的文档,你能在他的基类 -- UIRect中找到。
Pro-Tip
一个Kinematic的Rigidbody会自动加到你的Panel里面,因为根据Unity,这会极大提升重物理游戏的性能。移动静态collider是一个很耗时的操作,而移动rigidbody却不会。
类文档
http://tasharen.com/ngui/docs/class_u_i_panel.html
如果你有一些和这个组件相关的问题,也可以在下面讨论。