yyl
2026-02-09 5a4e34c8a85737c0fa5b5775122da31155cbaef3
Main/Component/UI/Effect/EffectPlayer.cs
@@ -35,7 +35,7 @@
    public EffectConfig effectConfig;
    public float speedRate = 1f;
    public float speedRate = 1f;    //初始化的时候用 修改使用SetSpeed
    [Header("是否循环播放spine特效")]
    public bool isPlaySpineLoop = false;
@@ -82,8 +82,12 @@
    protected virtual void OnEnable()
    {
        if (isPlayOnEnable)
        if (isPlayOnEnable && playDelayTime != 0)
        {
            PlayAsync(false).Forget();
        }
        else if (isPlayOnEnable)
        {
            Play(false);
        }
@@ -225,7 +229,7 @@
            PlayerEffect();
        }
    
        SoundPlayer.Instance.PlayUIAudio(effectConfig.audio);
    }
@@ -245,7 +249,17 @@
    //     return;
    // }
   //越大越快
   public void SetSpeed(float speed)
    {
        speedRate = speed;
        if (spineAnimationState == null)
        {
            Debug.LogError("spineAnimationState is null 可以先调用play");
            return;
        }
      spineAnimationState.TimeScale = speed;
   }
    protected void PlaySpineEffect(bool closePMA = false)
    {
@@ -260,11 +274,10 @@
        {
            //LoadAsset 已经有缓存SkeletonDataAsset
            spineComp.skeletonDataAsset = ResManager.Instance.LoadAsset<SkeletonDataAsset>("UIEffect/" + effectConfig.packageName, effectConfig.fxName);
            //为true时会有部分特效不显示 如主界面装备特效;改成伽马后不会出现BUG故注释代码
            // spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA;
            //为true时会有部分特效不显示 如满级经验条;改成伽马后部分特效正常,还有部分依然要改此设置
            spineComp.MeshGenerator.settings.pmaVertexColors = !closePMA;
            spineComp.raycastTarget = false;
            spineComp.Initialize(true);
            spineComp.timeScale = speedRate;
            // 检查动画是否有相加模式
            // bool hasAdditiveBlend = CheckForAdditiveBlend(spineComp.Skeleton);
            // if (hasAdditiveBlend)
@@ -278,6 +291,7 @@
            spineComp.material = ResManager.Instance.LoadAsset<Material>("Materials", "SkeletonGraphicDefault-Straight");
            spineAnimationState = spineComp.AnimationState;
            spineAnimationState.TimeScale = speedRate;
            spineAnimationState.Data.DefaultMix = 0f;
            spineAnimationState.Complete -= OnSpineAnimationComplete;
            spineAnimationState.Complete += OnSpineAnimationComplete;
@@ -285,6 +299,7 @@
        spineComp.enabled = true;
        PlayerTheSpineAnim();
        SoundPlayer.Instance.PlayUIAudioDelay(effectConfig.audio).Forget();
    }
        // 播放指定动画
@@ -347,7 +362,7 @@
        }
        // 从特效预制体池获取特效
        pool = GameObjectPoolManager.Instance.RequestPool(effectPrefab);
        pool = GameObjectPoolManager.Instance.GetPool(effectPrefab);
        effectTarget = pool.Request();
        // 设置父节点和位置
        effectTarget.transform.SetParent(transform);
@@ -375,6 +390,7 @@
        {
            blocker.SetParentCanvas(canvas);
        }
        SoundPlayer.Instance.PlayUIAudioDelay(effectConfig.audio).Forget();
    }
    public async UniTask PlayAsync(bool showLog = true, bool closePMA = false)