hch
2025-07-16 7677bf7ab5f15f55b7e1366f1601e541a9a31f4d
Main/Component/UI/Effect/EffectPlayer.cs
@@ -10,22 +10,43 @@
   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);
@@ -44,19 +65,19 @@
            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>();
@@ -66,12 +87,12 @@
        this.DelayFrame(blocker.UpdateSortingOrder);
        // blocker.UpdateSortingOrder();
        // 自动销毁
        if (autoDestroy)
        {
            Destroy(effectTarget, destroyDelay);
        }
   }
    }
}