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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步