UGUI在Screen Space - Overlay渲染模式下,由于不依赖摄像机渲染,使得其无法通过修改Z轴的方式修改物体间的层级关系,以下是解决方案:

我创建了一个空的工程,然后创建了一个Image,然后复制成了一样大小的四份 为了便于分辨,设置为不同的颜色,改变他们的位置,使之相互交叉遮挡

根据运行结果看,每当点击一个图片,它在Hierarchy视图中的顺序会被改变,而且在场景中会被放置到最顶层

代码很简单,只有几行,如下,每个图片上都挂上去,就出现上图的效果。

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;public class ChangeHierarchyOnCode : MonoBehaviour, IPointerClickHandler
{void IPointerClickHandler.OnPointerClick(PointerEventData eventData){transform.SetAsLastSibling();// transform.SetAsFirstSibling();// transform.SetSiblingIndex(2);}
}

然后代码改成这样:

using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
using System;public class ChangeHierarchyOnCode : MonoBehaviour, IPointerClickHandler
{void IPointerClickHandler.OnPointerClick(PointerEventData eventData){// transform.SetAsLastSibling();transform.SetAsFirstSibling();// transform.SetSiblingIndex(2);}
}

运行结果:

运行结果显示,每当点击了一张图片,该图片会被放置到最底层,以至于被其他物体遮挡,

代码中注释掉的transform.SetSiblingIndex(2);已经能够猜出其功能,它会使被点击的物体放置在指定的层级中,

该层级从0开始

越接近0的层级,被更多的物体遮挡,当层级为0时,其效果与transform.SetAsFirstSibling();相同

但是当层级小于0时,其效果与SetAsLastSibling一致

越大的层级,被更少物体遮挡,当层级为大于等于transform.parent.childCount - 1时,其效果与SetAsLastSibling一致

由此我们可以进行这样的猜测(注意:只是猜测):

每个Transform组件,内部保存了一个子物体列表,每当渲染时,从该列表最开始到最末尾依次渲染,于是,如果有遮挡,则后面渲染的物体遮挡住先前渲染的物体。

所以,transform.SetAsLastSibling/transform.SetAsFirstSibling/transform.SetSiblingIndex三个函数灵活使用,就可以在代码中动态的修改图片之间的遮挡关系

Unity UGUI 代码改变遮挡层级相关推荐

  1. [unity3d][通过代码]改变材质球颜色,动态改变材质球颜色,动态改变模型颜色

    unity通过代码改变材质球颜色 gitee地址:https://gitee.com/asiworld csdn博客地址:https://blog.csdn.net/JianShengShuaiest ...

  2. Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理

    原文链接(尊重原著):[100个 Unity实用技能] | Unity 在代码中 动态改变RectTransform位置及宽高 的方法整理_unity 修改recttransform_呆呆敲代码的小Y ...

  3. Unity UGUI优化与原理【unity官方】

    来源( 来源:unity官方 Optimizing Unity UI ) 官方链接: [1]  https://unity3d.com/cn/learn/tutorials/temas/best-pr ...

  4. Unity UGUI开发设计及案例讲解

    Unity--UGUI开发设计及案例讲解 1. Unity4.6跟以前的版本的最大区别首先在于在层级视图中点鼠标右键时出现的弹出菜单上,它把以前许多的菜单项进行了归类,比如cube sphere ca ...

  5. Unity之UGUI-特效遮挡问题2.0

    Unity之UGUI-特效遮挡问题2.0 之前有发过一版特效遮罩问题,部分的解决了[图-特效-图 ]结构式的展示问题链接.这次在git上找到一个非常好用的特效解决方案,可以支持Mask遮罩. 效果图 ...

  6. 【游戏开发实战】Unity UGUI制作雷达图/天赋图/属性图/能力图,因为太怕痛就全点了防御力

    文章目录 一.前言 二.最终效果 三.原理 四.具体实现 1.雷达图背景图 2.封装UIPolygon.cs 3.制作预设 4.测试脚本RadarTest.cs 五.运行测试 六.结束语 七.附录:U ...

  7. Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理

    Unity UGUI 效果 之 UI 元素 多边形UI (例如雷达图,圆形,不规则多边形 UI等)显示 的简单实现的几种方法整理 目录 Unity UGUI 效果 之 UI 元素 多边形UI (例如雷 ...

  8. Unity UGUI Button 中文详解-Chinar

    Chinar blog :www.chinar.xin Unity UGUI 完整系列教程 (Chinar中文图解) Unity UGUI Button 组件 本文提供全流程,中文翻译. Chinar ...

  9. Unity UGUI Batches合批规则详解(含源码)

    Unity UGUI Batches合批规则详解 在处理UGUI DrawCall问题的时候,我们经常遇到各式各样的问题. 问题1:在处理UGUI合批的时候,发现了一个面板父节点发生旋转,底下的UI合 ...

最新文章

  1. iOS开发-ViewController的生命周期和切换
  2. JavaScript中为什么string可以拥有方法?
  3. vs2005之主题与皮肤的学习
  4. 不可用于python编程开发的是_Python编程语言可做而不应做的一些事是什么_Python视频_Python视频教程_编程语言_课课家...
  5. Android日志[进阶篇]一-使用 Logcat 写入和查看日志
  6. 这个网站收集了很多杂志的审稿周期和收稿、拒稿意见,值得看看
  7. 函数 getaddrinfo 学习
  8. 宜人贷CTO段念:透明与面向目标是管理理念的核心
  9. Linux时间子系统之一:clock source(时钟源)
  10. Cisco交换机设备配置镜像端口
  11. 计算机应用基础 周凌,《新编计算机应用基础教程》-计算机基础知识.ppt
  12. 【机器学习系列】GMM第一讲:两个角度认识高斯混合模型
  13. Opencv2与Opencv4共存
  14. EPLAN学习教程目录
  15. 毕业设计 大学生心理健康管理平台
  16. 海伦公式c语言double,海伦公式
  17. Go语言 defer 和 recover
  18. 2-软件生命周期模型
  19. 算法第四版扔鸡蛋问题
  20. 主动降噪耳机哪个牌子性价比最高?千元内主动降噪耳机推荐

热门文章

  1. 常见软件项目开发模式思考
  2. set Assigning an instance of ‘esri.***‘ which is not a subclass of ‘esri.***‘错误偶遇
  3. PDM软件介绍(一)
  4. 选购硬盘HDD、SSD、SSHD、IDE、SATA、SCSI、SAS、PCIe、M.2、USB
  5. 使用div制作表格效果
  6. JAVA工具_PinyinConv
  7. http接口测试:了解协议、请求方法、响应状态码
  8. 重装系统后dns服务器未响应,dns服务器未响应,小编教你dns服务器未响应怎么解决...
  9. 2017 计蒜之道 初赛 第四场 (第二题) B. 商汤科技的行人检测(简单)
  10. Java征兵系统(可拓展)