• 深度(Depth)概念


    强化对深度的理解

      在老版本的NGUI中,UI的显示层次关系是依靠z轴进行的。在新版本的NGUI中,所有UI的z轴都被统一,然后用深度来决定和管理显示的层次关系。关于深度,要记住一下关键点:

      1.每一个UI Panel和每一个UI控件都一定会有一个Depth,深度值大代表显示的优先级高(会越趋向于在界面上层显示)。

      2.Depth决定的是UI的显示层级关系,一个UI控件是否显示在最上层是由它所属的Panel的Depth和它本身的Depth决定的。一般情况下,属于低Depth的Panel的控件,不管这个控件本身的Depth为多少,它都将显示在高Depth的Panel的控件后面(被高Depth的Panel遮住)。

      3.尽量不要让Panel之间共享同一个Depth,这样会导致性能消耗增加。

      4.制作Panel和UI控件时,需要考虑它所属的panel和它自身的Depth是否能让它显示在正确的层次关系上。

    小心相机的深度

      在场景中的每一个Camera也有一个渲染深度。

      NGUI创建时,都会创建一个它独有的相机。这个相机其实就是Unity中普通的Camera,然后为其附加了一个UI Camera的组件。需要注意的是,所有的Camera也都有一个Depth,这个Depth会影响到UI中的Depth,特别是场景有多个Camera来渲染不同层次的UI时,这个影响会比较大。需遵循以下规律:

      1.相机的Depth永远是最高级的,也就是高Depth相机所看到的画面,永远在低Depth相机所看到的画面之上。

      2.如果需要相机有视觉穿透效果(只渲染所看到的东西,其他地方透掉显示其他相机所看到的画面),需要将相机的ClearFlags设置为DepthOnly。

      3.并不是只有负责渲染NGUI的相机的Depth会有影响,所有的相机(比如默认存在的渲染场景的Main Camera)的Dpth都受此规律影响。

      4.创建UI时,UI Root下生成的相机默认Depth是比场景中的相机深度高的,不过当场景内有多个摄像机时,一定要管理好每个摄像机的CleraFlags和Depth。

      5.当场景内有多个摄像机时,一定要检查摄像机的CullingMask不要渲染重复的Layer,否则可能导致显示双重画面。

  • 相关阅读:
    LeetCode 32.使数组唯一的最小增量
    LeetCode 31. 最小的k个数 快速排序+堆排序+二叉搜索树
    LeetCode 30. 最长回文串
    LeetCode 29. 矩形重叠 反向思维
    LeetCode 28. 拼写单词 HashMap赋值给另一个HashMap
    LeetCode 27. 字符串压缩
    Java SSM Spring+Spring MVC+Mybatis整合
    LeetCode 26.岛屿的最大面积 DFS深度遍历问题
    LeetCode 25.最长上升子序列 动态规划
    LeetCode 24.找出数组中出现次数大于二分之一数组长度的数
  • 原文地址:https://www.cnblogs.com/-soy/p/5844265.html
Copyright © 2020-2023  润新知