当前位置: 首页 > news >正文

【Unity实战】UGUI和Z轴排序那点事儿

如果读者是从Unity 4.x时代过来的,可能都用过NGUI这个插件(后来也是土匪成了正规军),NGUI一大特点是可以靠transform位移的Z值进行遮挡排序,然而这个事情在UGUI成了难题(Sorting Layer、Inspector顺序等因素综合作为遮挡前置条件)。

如图所示,现在我们有三个Image,白红蓝。在Inspector中的顺序如下:

如果我们尝试让白色遮挡红色,按照NGUI的做法,我们把红色的Z值改为50,然而这种做法在UGUI直接现场寄。

其中一种解决办法是改一下Inspector顺序。

至于如果想动态地调整顺序,你可以参考如下代码:

// UIPosZSorter
// Originally written by AStar
// Modified and commented by Shepherd Zhu
// Sort the RectTransform by Z Pos.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class UIPosZSorter : MonoBehaviour
{private List<Transform> m_Transforms; // 存储子物体的Transform组件private void Awake(){m_Transforms = new List<Transform>(); // 初始化m_Transforms列表}private void Update(){// 清空m_Transforms列表m_Transforms.Clear();// 遍历所有子物体,将其Transform组件添加到m_Transforms列表中for (int i = 0; i < transform.childCount; i++){m_Transforms.Add(transform.GetChild(i));}// 根据子物体的localPosition.z属性进行排序m_Transforms.Sort((a, b) => b.localPosition.z.CompareTo(a.localPosition.z))// 根据排序后的顺序,设置子物体的SiblingIndexfor (int i = 0; i < m_Transforms.Count; i++){m_Transforms[i].SetSiblingIndex(i);}}
}

效果如图:

http://www.lryc.cn/news/311032.html

相关文章:

  • Vue/React 前端高频面试
  • [技巧]Arcgis之图斑四至范围批量计算
  • C/C++工程师面试题(STL篇)
  • Effective Programming 学习笔记
  • 【MGR】MySQL Group Replication 背景
  • 300分钟吃透分布式缓存-17讲:如何理解、选择并使用Redis的核心数据类型?
  • 思科网络设备监控
  • 深入剖析k8s-控制器思想
  • go并发模式之----使用时顺序模式
  • [动态规划]---part1
  • java 关于 Object 类中的 wait 和 notify 方法。(生产者和消费者模式!)
  • YOLOv8姿态估计实战:训练自己的数据集
  • 【海贼王的数据航海:利用数据结构成为数据海洋的霸主】链表—双向链表
  • 做测试还是测试开发,选职业要慎重!
  • Java面试题总结200道(二)
  • 面试数据库篇(mysql)- 03MYSQL支持的存储引擎有哪些, 有什么区别
  • MySQL深入——25
  • Docker运行时安全之道: 保障容器环境的安全性
  • 前后端分离项目Docker部署指南(上)
  • ARM 架构下国密算法库
  • 源码的角度分析Vue2数据双向绑定原理
  • 动态规划(算法竞赛、蓝桥杯)--树形DP树形背包
  • electron打包前端项目
  • 2.1基本算法之枚举7647:余数相同问题
  • 求最短路径之迪杰斯特拉算法
  • python大学社团管理系统开发文档
  • leetcode 1328.破坏回文串
  • 重学SpringBoot3-自动配置机制
  • sql基本语法+实验实践
  • Node.js中的并发和多线程处理