public IPostEffect GetOrCreateEffect(EPostEffectType type) { var idx = (int)type; if (idx < 0 || idx >= MAX_EFFECT_COUNT) { Debug.LogError("EPostEffectType out of range" + type.ToString()); return(null); } IPostEffect comp = null; if (_allEffects[idx] == null) { switch (type) { case EPostEffectType.RadialBlur: comp = _mainCamera.GetOrAddComponent <PostEffectRadialBlur>(); break; default: break; } comp.OnInstance(); if (comp.shader == null) { Debug.LogError("Can not find PostEffect shader " + type.ToString()); return(null); } _allEffects[idx] = comp; } return(_allEffects[idx]); }