Unity___粒子特效与UI的排序
问题#
有多个UI,身上都有粒子特效时,为了防止不同粒子之间的冲突,我们需要决定这些粒子排序。
大致步骤:可以利用Canvas组件去修改UI的排序,再通过脚本控制UI子物体粒子特效的排序。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[AddComponentMenu("UI/UIOrder")]
public class UIOrder : MonoBehaviour
{
[SerializeField]
private int _sortingOrder = 0;
public int sortingOrder
{
get
{
return _sortingOrder;
}
set
{
if (value != _sortingOrder)
{
_sortingOrder = value;
Refresh();
}
}
}
private Canvas _canvas = null;
public Canvas canvas
{
get
{
if (_canvas == null)
{
_canvas = gameObject.GetComponent<Canvas>();
if (_canvas == null)
{
_canvas = gameObject.AddComponent<Canvas>();
}
_canvas.hideFlags = HideFlags.NotEditable;
}
return _canvas;
}
}
public void Refresh()
{
canvas.overrideSorting = true;
canvas.sortingOrder = _sortingOrder;
foreach(ParticleSystemRenderer particle in transform.GetComponentsInChildren<ParticleSystemRenderer>(true))
{
Debug.Log(this.gameObject.name);
particle.sortingOrder = _sortingOrder;
}
}
#if UNITY_EDITOR
private void OnValidate()
{
Refresh();
}
private void Reset()
{
Refresh();
}
#endif
}
Quote#
宣雨松:Unity3D游戏开发(第二版)P145
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)