Files
Main/Assets/Launcher/ExternalLibs/CmdBuffer/DistortVfx/DistortVfxMarkScript.cs
2025-01-25 04:38:09 +08:00

99 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
namespace Thousandto.Launcher.ExternalLibs
{
/// <summary>
/// 标记当前特效为可以产生扭曲力场的特效
/// </summary>
public class DistortVfxMarkScript : MonoBehaviour
{
//是否需要渲染
public bool IsOnlyDistort = true;
//当前render的内容
private Renderer _render;
private void Start()
{
_render = GetComponent<Renderer>();
if (_render!=null )
{
_render.enabled = !IsOnlyDistort;
Add(_render);
}
}
private void OnEnable()
{
if (_render != null)
{
_render.enabled = !IsOnlyDistort;
Add(_render);
}
}
private void OnDisable()
{
Remove(_render);
}
private void OnDestroy()
{
Remove(_render);
}
private void OnValidate()
{
if (_render != null)
{
_render.enabled = !IsOnlyDistort;
}
}
#region // 静态函数
//定义所有的组件列表
private static List<Renderer> _allRenders = new List<Renderer>();
//是否当前Renderer列表是否发生了改变
private static bool isChanged = false;
//添加到列表
private static void Add(Renderer r)
{
if (r != null)
{
if (_allRenders.IndexOf(r) < 0)
{
_allRenders.Add(r);
isChanged = true;
Debug.LogError("Add::_allRenders.Count:" + _allRenders.Count);
}
}
}
//从列表中移除
private static void Remove(Renderer r)
{
if (r != null)
{
if (_allRenders.Remove(r))
{
isChanged = true;
Debug.LogError("Remove::_allRenders.Count:" + _allRenders.Count);
}
}
}
//获取所有标记的Render组件列表
public static bool GetAllRenders(out List<Renderer> list)
{
list = _allRenders;
var ret = isChanged;
isChanged = false;
return ret;
}
#endregion
}
}