using UnityEngine; [AddComponentMenu("UI/UIOrder")] public class UIOrder : MonoBehaviour { [SerializeField] private int _sortingOrder = 0; public int sortingOrder { get { return _sortingOrder; } set { if (_sortingOrder != value) { _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 particale in transform.GetComponentsInChildren<ParticleSystemRenderer>()) { particale.sortingOrder = _sortingOrder; } } #if UNITY_EDITOR private void OnValidate() { Refresh(); } private void Reset() { Refresh(); } #endif }
Canvas下的3个物体,分别挂上脚本,设置sortingOrder分别为0,1,2,这样粒子就被两张图片夹在中间了。