using System; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; namespace UnityTest.ZXL { public class EffectManager : BaseAutoMono { public List effectDatas = new List(); private void Start() { HideAllEffect(); } public void ShowOrHideEffect(EffectType effectType, bool isShow) { foreach (var effectData in effectDatas) { if (effectData.Check(effectType)) { effectData.effect.SetActive(isShow); break; } } } public void HideAllEffect() { foreach (var effectData in effectDatas) { effectData.effect.SetActive(false); } } public bool isEditor; #if UNITY_EDITOR [ShowIf("isEditor")] [Button] void Add() { effectDatas.Clear(); var effectComponents = transform.GetComponentsInChildren(); foreach (var effectComponent in effectComponents) { effectDatas.Add(effectComponent.effectData); } } #endif } [System.Serializable] public class EffectData { public EffectType effectType; public GameObject effect; public bool Check(EffectType effectType) { return this.effectType == effectType; } } [System.Serializable] public enum EffectType { 光度计爆炸特效, 光度计烟雾特效, 光度计持续燃烧特效, 喷水特效, 乙炔气瓶燃烧特效, 喷雾特效, } }