99 lines
2.4 KiB
C#
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
|
|
}
|
|
}
|