UnityUGUI和特效(含粒子系统和3DObject)之间层级问题

更新时间:2023-07-28 00:49:50 阅读: 评论:0

UnityUGUI和特效(含粒⼦系统和3DObject)之间层级问题撰写本⽂时使⽤Unity的版本为2017.4.10f1(64bit)
1.描述问题
  需求:通过UGUI制作⼀个界⾯之后,我需要在界⾯的后⾯跟前⾯各添加⼀个特效。
  问题:同⼀层级UI是最后渲染的,所以UI永远是在最上⾯
  解决:分别调整ui_effect1、imageWhile、ui_effect2这三个物品的渲染层级
2.层级知识补充
  blog.csdn/leansmall/article/details/66478412
3.解决⽅案
  需要设置层级的Object分为三种:UI、粒⼦系统、3D Object
  (1) UI:添加Canvas组件控制,勾选Override Sorting之后可以设置Sorting Layer和 Order in Layer
  (2) 粒⼦系统:设置Render下的Sorting Layer和 Order in Layer
  (3) 3D Object:
    a.代码修改Mesh Renderer的Sorting Layer和 Order in Layer,Mesh Renderer在预制体上⽆法直接修改,但是继承于Renderer ,
是有Sorting Layer和 Order in Layer参数可以修改的
    b.挂上Sorting Group组件直接在预制体⾥修改
soforth4.⽅案优化英文儿歌歌词
  使⽤统⼀的脚本组件挂于UI或者特效上,⽤于设置当前Object及所有⼦物体的层级。  优点:(1)组件统⼀,可以在代码⾥遍历修改
     (2)特效⼀般⼦物体很多,挂在根节点,不⽤逐个设置层级
using UnityEngine;
[ExecuteInEditMode]
public class UIDepth : MonoBehaviour
{
public int order = 100;
珍惜所拥有的
public bool isUI = fal;
private void Start()
{
if(isUI)
{
Canvas canvas = GetComponent<Canvas>();
if(canvas == null)
{2011年上海高考作文
canvas = gameObject.AddComponent<Canvas>();
}教育学考研方向
canvas.overrideSorting = true;
canvas.sortingOrder = order;
}
el
ourstepsmonro
renew{
Renderer[] rs = GetComponentsInChildren<Renderer>();
foreach(var r in rs)
duplicatekey{
r.sortingOrder = order;
}transxual
}
}
}
5.⽅案建议
  (1)界⾯分级:
  ⼀级界⾯(层级设置只在0-10),⼆级界⾯(10-20),三级界⾯(30-40),出现层级问题只需调整对应级界⾯的层级,避免牵⼀发⽽动全⾝的情况,如:⼀级界⾯原本没有特效,后来加了⼀个特效,后⾯界⾯层级全都要调⾼
转载于:/DonYao/p/10722609.html

本文发布于:2023-07-28 00:49:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/190783.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:层级   修改   组件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图