| | |
| | | |
| | | public class RendererAdjuster : MonoBehaviour |
| | | { |
| | | public int renderQueue = 3000; |
| | | |
| | | public int sortingOrder = 0; |
| | | |
| | |
| | | |
| | | public List<Renderer> renderers = new List<Renderer>(); |
| | | |
| | | protected Canvas canvas; |
| | | |
| | | public Action<string, int> onSortingChanged; |
| | | |
| | | protected void Awake() |
| | | { |
| | | UpdateComps(); |
| | | } |
| | | |
| | | public void SetSortingOrder(int sortingOrder) |
| | | { |
| | |
| | | UpdateSortingOrder(); |
| | | } |
| | | |
| | | public void Awake() |
| | | { |
| | | UpdateComps(); |
| | | } |
| | | |
| | | protected void OnEnable() |
| | | { |
| | | UpdateComps(); |
| | | UpdateSortingOrder(); |
| | | } |
| | | |
| | | protected void UpdateComps() |
| | | { |
| | | renderers.Clear(); |
| | | renderers.AddRange(gameObject.GetComponentsInChildren<Renderer>(true)); |
| | | |
| | | canvas = GetComponent<Canvas>(); |
| | | } |
| | | |
| | | public void UpdateSortingOrder() |
| | |
| | | // 将特效的排序顺序设置为Canvas排序顺序加上偏移量 |
| | | ApplySortingSettings(sortingOrder, customSortingLayer); |
| | | } |
| | | |
| | | |
| | | private void ApplySortingSettings(int sortingOrder, string sortingLayer) |
| | | { |
| | |
| | | if (renderer != null) |
| | | { |
| | | renderer.sortingOrder = sortingOrder; |
| | | renderer.material.renderQueue = renderQueue; // 设置渲染队列 |
| | | // renderer.material.renderQueue = overlayRQ; |
| | | if (!string.IsNullOrEmpty(sortingLayer)) |
| | | { |
| | | renderer.sortingLayerName = sortingLayer; |
| | |
| | | } |
| | | } |
| | | |
| | | if (null != canvas) |
| | | { |
| | | canvas.sortingOrder = sortingOrder; |
| | | if (!string.IsNullOrEmpty(sortingLayer)) |
| | | { |
| | | canvas.sortingLayerName = sortingLayer; |
| | | } |
| | | } |
| | | |
| | | onSortingChanged?.Invoke(sortingLayer, sortingOrder); |
| | | } |
| | | } |