yyl
2026-05-26 ed4312ff529fd56bad20ef15eeeb1a7e45051ae3
Main/System/Battle/Skill/SkillBase.Cast.cs
@@ -18,7 +18,7 @@
                ? caster.GetRectTransform().anchoredPosition : Vector2.zero;
            bool casterTweening = caster != null && caster.GetRectTransform() != null
                && DG.Tweening.DOTween.IsTweening(caster.GetRectTransform());
            BattleDebug.LogError($"[前冲诊断] Cast 入口 skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} castMode={skillSkinConfig?.castMode} anchoredPos={castEntryPos} casterTweening={casterTweening}");
            // BattleDebug.LogError($"[前冲诊断] Cast 入口 skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} castMode={skillSkinConfig?.castMode} anchoredPos={castEntryPos} casterTweening={casterTweening}");
        }
#endif
        // 广播技能释放事件
@@ -175,13 +175,13 @@
    private void ExecuteMoveAndCastSequence(RectTransform target, Action onReturnComplete)
    {
#if UNITY_EDITOR
        BattleDebug.LogError($"[前冲诊断] ExecuteMoveAndCastSequence 开始 skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} CastDistance={skillSkinConfig?.CastDistance} castMode={skillSkinConfig?.castMode}");
        // BattleDebug.LogError($"[前冲诊断] ExecuteMoveAndCastSequence 开始 skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} CastDistance={skillSkinConfig?.CastDistance} castMode={skillSkinConfig?.castMode}");
#endif
        ShadowIllutionCreate(true);
        MoveToTarget(target, new Vector2(skillSkinConfig.CastDistance, 0), () =>
        {
#if UNITY_EDITOR
            BattleDebug.LogError($"[前冲诊断] 前冲完成 skillId={skillConfig?.SkillID} caster={caster?.ObjID} 准备 CastImpl");
            // BattleDebug.LogError($"[前冲诊断] 前冲完成 skillId={skillConfig?.SkillID} caster={caster?.ObjID} 准备 CastImpl");
#endif
            if (skillSkinConfig.CastDistance < 9999 && skillSkinConfig.SkinllSFX2 != 0)
            {
@@ -220,12 +220,12 @@
            ? caster.GetRectTransform().anchoredPosition : Vector2.zero;
        bool mttTweening = caster != null && caster.GetRectTransform() != null
            && DG.Tweening.DOTween.IsTweening(caster.GetRectTransform());
        BattleDebug.LogError($"[前冲诊断] MoveToTarget 入口 skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} CastDistance={skillSkinConfig?.CastDistance} offset={offset} speed={speed} fromPos={fromPos} casterTweening={mttTweening}");
        // BattleDebug.LogError($"[前冲诊断] MoveToTarget 入口 skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} CastDistance={skillSkinConfig?.CastDistance} offset={offset} speed={speed} fromPos={fromPos} casterTweening={mttTweening}");
#endif
        if (skillSkinConfig.CastDistance >= 9999)
        {
#if UNITY_EDITOR
            BattleDebug.LogError($"[前冲诊断] CastDistance>=9999 直接跳过移动 skillId={skillConfig?.SkillID} caster={caster?.ObjID}");
            // BattleDebug.LogError($"[前冲诊断] CastDistance>=9999 直接跳过移动 skillId={skillConfig?.SkillID} caster={caster?.ObjID}");
#endif
            _onComplete?.Invoke();
            return;
@@ -238,14 +238,14 @@
        Vector3 targetWorld = target != null ? target.position : Vector3.zero;
        Vector3 targetLossyScale = target != null ? (Vector3)target.lossyScale : Vector3.one;
        Vector2 targetAnchored = target != null ? target.anchoredPosition : Vector2.zero;
        BattleDebug.LogError($"[前冲诊断] target信息 skillId={skillConfig?.SkillID} caster={caster?.ObjID} casterCamp={caster?.Camp} target.name={targetName} target.anchoredPos={targetAnchored} target.worldPos={targetWorld} target.lossyScale={targetLossyScale}");
        // BattleDebug.LogError($"[前冲诊断] target信息 skillId={skillConfig?.SkillID} caster={caster?.ObjID} casterCamp={caster?.Camp} target.name={targetName} target.anchoredPos={targetAnchored} target.worldPos={targetWorld} target.lossyScale={targetLossyScale}");
#endif
        var tweener = BattleUtility.MoveToTarget(caster.GetRectTransform(), target, offset, () =>
        {
#if UNITY_EDITOR
            Vector2 toPos = caster != null && caster.GetRectTransform() != null
                ? caster.GetRectTransform().anchoredPosition : Vector2.zero;
            BattleDebug.LogError($"[前冲诊断] MoveToTarget 完成 skillId={skillConfig?.SkillID} caster={caster?.ObjID} toPos={toPos}");
            // BattleDebug.LogError($"[前冲诊断] MoveToTarget 完成 skillId={skillConfig?.SkillID} caster={caster?.ObjID} toPos={toPos}");
#endif
            //  tween 完成时清除 caster 上的 activeMoveTween 句柄,放开 CanCastSkillAnimation 的闸门。
            if (caster != null)
@@ -283,7 +283,7 @@
                ? caster.GetRectTransform().anchoredPosition : Vector2.zero;
            bool finTweening = caster != null && caster.GetRectTransform() != null
                && DG.Tweening.DOTween.IsTweening(caster.GetRectTransform());
            BattleDebug.LogError($"[前冲诊断] OnAttackFinish skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} anchoredPos={finPos} casterTweening={finTweening}");
            // BattleDebug.LogError($"[前冲诊断] OnAttackFinish skillId={skillConfig?.SkillID} caster={caster?.ObjID} battleType={tagUseSkillAttack?.BattleType} anchoredPos={finPos} casterTweening={finTweening}");
        }
#endif
        TurnBack(null, 1f);