using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering; namespace Thousandto.Launcher.ExternalLibs { /// /// 标记当前特效为可以产生扭曲力场的特效 /// public class DistortVfxMarkScript : MonoBehaviour { //是否需要渲染 public bool IsOnlyDistort = true; //当前render的内容 private Renderer _render; private void Start() { _render = GetComponent(); 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 _allRenders = new List(); //是否当前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 list) { list = _allRenders; var ret = isChanged; isChanged = false; return ret; } #endregion } }