using UnityEngine; using UnityEngine.Playables; using UnityEngine.Timeline; using System.Collections.Generic; namespace game { /// /// 1v1扇耳光大赛TV演示面板 Event1v1BattleSlapTvPopupPanel /// 真正的战斗演示面板,本版本只实现基础UI,Timeline/Spine系统留到后续版本 /// public partial class Event1v1BattleSlapTvPopupPanel { #region SerializeField [Header("关闭面板")] [SerializeField][Min(0f)] private float closePanelDelaySeconds = 2f; [SerializeField][Min(0f)] private float firstMatchShowSeconds = 10f; [Header("Animation")] [SerializeField][Min(0)] private float hpBarChangeTime = 0.3f; [SerializeField][Min(0)] private float hpTextChangeTime = 1f; /// 罐头品质 >= 该值时使用重击 Timeline(attack/hit 的 _2 档)。 [SerializeField] private int heavyHitQualityMin = 3; [Header("Result Timeline (_resDirector) 播放前延时(秒)")] [SerializeField][Min(0f)] private float ko_animation_delay; [SerializeField][Min(0f)] private float defeat_animation_delay; [SerializeField][Min(0f)] private float timeout_animation_delay; [Header("攻击→受击间隔(先播攻击侧 Timeline,按秒数推进到「落点」后再播受击侧;双方仅此一点耦合,收招各自播不回拉双人 idle)")] [SerializeField][Min(0f)] private float attackHitGapPlayerLight = 0.08f; [SerializeField][Min(0f)] private float attackHitGapPlayerHeavy = 0.12f; [SerializeField][Min(0f)] private float attackHitGapNpcLight = 0.08f; [SerializeField][Min(0f)] private float attackHitGapNpcHeavy = 0.12f; [Header("play Timeline")] [SerializeField] private PlayableAsset eat_player; [SerializeField] private PlayableAsset eat_player_buff; /// 循环待机;扇耳光流程里 hit2idle/攻击收招后以 Loop 播放且不阻塞后续 Timeline。 [SerializeField] private PlayableAsset idle_player; [SerializeField] private PlayableAsset ko_player; [SerializeField] private PlayableAsset win_player; [SerializeField] private PlayableAsset attack_player_1; [SerializeField] private PlayableAsset attack_player_2; /// 受击后过渡到站姿,播完再接 循环更自然。 [SerializeField] private PlayableAsset hit2idle_player_1; [SerializeField] private PlayableAsset hit2idle_player_2; /// 受击到 KO 的过渡段,播完再接 [SerializeField] private PlayableAsset hit2ko_player_1; [SerializeField] private PlayableAsset hit2ko_player_2; [SerializeField] private PlayableAsset hit_player_1; [SerializeField] private PlayableAsset hit_player_2; [Header("enemy Timeline")] /// 循环待机;受击侧 hit2idle 后以 Loop 播放且不阻塞后续逻辑。 [SerializeField] private PlayableAsset idle_enemy; [SerializeField] private PlayableAsset ko_enemy; [SerializeField] private PlayableAsset win_enemy; [SerializeField] private PlayableAsset attack_enemy_1; [SerializeField] private PlayableAsset attack_enemy_2; /// 受击后过渡到站姿,播完再接 循环。 [SerializeField] private PlayableAsset hit2idle_enemy_1; [SerializeField] private PlayableAsset hit2idle_enemy_2; /// 受击到 KO 的过渡段,播完再接 [SerializeField] private PlayableAsset hit2ko_enemy_1; [SerializeField] private PlayableAsset hit2ko_enemy_2; [SerializeField] private PlayableAsset hit_enemy_1; [SerializeField] private PlayableAsset hit_enemy_2; [Header("result Timeline")] [SerializeField] private PlayableAsset ko_player_res; [SerializeField] private PlayableAsset defeat_enemy_res; [SerializeField] private PlayableAsset timeout_player_res; [Header("Signal")] [SerializeField] private SignalAsset signalAsset; [SerializeField] private List tvDatas = new List(); #endregion } }