Main/Assets/Launcher/ExternalLibs/RenderQueue/RenderQueueAutomatic.cs
2025-01-25 04:38:09 +08:00

53 lines
1.3 KiB
C#

using UnityEngine;
namespace Thousandto.Launcher.ExternalLibs
{
public class RenderQueueAutomatic : MonoBehaviour
{
//UIPanel
private UIPanel panelOwner;
private void OnEnable()
{
panelOwner = GetUIPanelByParent(transform);
if (panelOwner != null)
{
SetRenderQueue(panelOwner.startingRenderQueue + 1);
}
}
//设置RenderQueue
private void SetRenderQueue(int renderQueue)
{
var Renderers = GetComponentsInChildren<Renderer>();
var count = Renderers.Length;
if (count > 0)
{
for (int i = 0; i < count; i++)
{
if(Renderers[i].sharedMaterial)
Renderers[i].sharedMaterial.renderQueue = renderQueue;
}
}
}
//获取UIPanel
private UIPanel GetUIPanelByParent(Transform trans)
{
var uiPanel = trans.GetComponent<UIPanel>();
if (uiPanel != null)
{
return uiPanel;
}
if (trans.parent != null)
{
return GetUIPanelByParent(trans.parent);
}
return null;
}
}
}