2025-12-02 16:04:23 +08:00

86 lines
2.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.Rendering.Universal;
[ExecuteInEditMode]
public class OutLineRender : OutLineVariable
{
public bool RunInEditor;
private Renderer[] rdArray;
private bool changeValue = false;
void OnEnable()
{
rdArray= GetComponentsInChildren<Renderer>();
for (int i = 0; i < rdArray.Length; i++)
{
if(OutLine.render.Contains(rdArray[i])) return;
OutLine.render.Add(rdArray[i]);
}
}
void Update()
{
if (changeValue)
{
changeValue = false;
if (OutLineColor != OutLine.OutLineColor)
{
OutLine.OutLineColor = OutLineColor;
}
if (OutLineStrength !=OutLine.OutLineStrength)
{
OutLine.OutLineStrength = OutLineStrength;
}
if(Application.isPlaying) return;
if (RunInEditor )
{
rdArray= GetComponentsInChildren<Renderer>();
for (int i = 0; i < rdArray.Length; i++)
{
if(OutLine.render.Contains(rdArray[i])) return;
OutLine.render.Add(rdArray[i]);
}
}
if (RunInEditor==false && rdArray!=null)
{
for (int i = 0; i < rdArray.Length; i++)
{
if(OutLine.render.Contains(rdArray[i])==false) return;
OutLine.render.Remove(rdArray[i]);
}
}
}
}
private void OnValidate()
{
changeValue = true;
}
private void OnDisable()
{
if (rdArray != null)
{
for (int i = 0; i < rdArray.Length; i++)
{
if(OutLine.render.Contains(rdArray[i])==false) return;
OutLine.render.Remove(rdArray[i]);
}
}
}
}