| | |
| | | |
| | | public float destroyDelay = 0f; |
| | | |
| | | public Canvas canvas = null; |
| | | [HideInInspector] public Canvas canvas = null; |
| | | |
| | | public GameObject effectTarget = null; |
| | | [HideInInspector] public GameObject effectTarget = null; |
| | | |
| | | protected void Start() |
| | | { |
| | | if (EffectMgr.Instance.IsNotShowBySetting(effectId)) |
| | | { |
| | | return; |
| | | } |
| | | protected void Start() |
| | | { |
| | | ReStart(); |
| | | } |
| | | |
| | | if (null != effectTarget) |
| | | { |
| | | DestroyImmediate(effectTarget); |
| | | effectTarget = null; |
| | | } |
| | | public void Stop() |
| | | { |
| | | if (null != effectTarget) |
| | | { |
| | | DestroyImmediate(effectTarget); |
| | | effectTarget = null; |
| | | } |
| | | } |
| | | |
| | | public void Play() |
| | | { |
| | | ReStart(); |
| | | } |
| | | |
| | | |
| | | |
| | | protected void ReStart() |
| | | { |
| | | if (EffectMgr.Instance.IsNotShowBySetting(effectId)) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | if (null != effectTarget) |
| | | { |
| | | DestroyImmediate(effectTarget); |
| | | effectTarget = null; |
| | | } |
| | | |
| | | EffectConfig effectCfg = EffectConfig.Get(effectId); |
| | | |
| | |
| | | Debug.LogError($"加载UI特效失败: {effectCfg.packageName}"); |
| | | return; |
| | | } |
| | | |
| | | |
| | | // 实例化特效 |
| | | effectTarget = Instantiate(effectPrefab, transform); |
| | | effectTarget.name = $"Effect_{effectCfg.packageName}"; |
| | | |
| | | if (null == canvas) |
| | | canvas = GetComponentInParent<Canvas>(); |
| | | effectTarget.name = $"Effect_{effectCfg.fxName}"; |
| | | |
| | | if (null == canvas) |
| | | { |
| | | Debug.LogError("can not find canvas for UIEffect " + effectId); |
| | | return; |
| | | } |
| | | if (null == canvas) |
| | | canvas = GetComponentInParent<Canvas>(); |
| | | |
| | | if (null == canvas) |
| | | { |
| | | Debug.LogError("can not find canvas for UIEffect " + effectId); |
| | | return; |
| | | } |
| | | |
| | | // 添加特效穿透阻挡器 |
| | | EffectPenetrationBlocker blocker = effectTarget.AddComponent<EffectPenetrationBlocker>(); |
| | |
| | | this.DelayFrame(blocker.UpdateSortingOrder); |
| | | |
| | | // blocker.UpdateSortingOrder(); |
| | | |
| | | |
| | | // 自动销毁 |
| | | if (autoDestroy) |
| | | { |
| | | Destroy(effectTarget, destroyDelay); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |