using UnityEngine; using DG.Tweening; public class HeroDebutCallResultCell : MonoBehaviour { [SerializeField] public ItemCell itemCell; [SerializeField] UIEffectPlayer orbBaseEffect; // 初始状态特效 [SerializeField] UIEffectPlayer orbBoomEffect; // 爆发瞬间特效 [SerializeField] UIEffectPlayer orbQualityEffect; // 品质底色特效 [SerializeField] UIEffectPlayer flowEffect; // 最终流光特效 [HideInInspector] public Vector3 originalLocalPos; void Awake() { // 记录初始本地坐标,用于发牌动画的归位 originalLocalPos = transform.localPosition; } /// /// 初始化格子数据 /// public void DisplayItemCell(int itemID, int count) { itemCell.Init(new ItemCellModel(itemID, true, count)); itemCell.button.SetListener(() => ItemTipUtility.Show(itemID)); } /// /// 重置所有 UI 元素和特效至初始状态 /// public void ResetState() { itemCell.gameObject.SetActive(false); orbBaseEffect.SetActive(false); orbBoomEffect.SetActive(false); orbQualityEffect.SetActive(false); flowEffect.SetActive(false); } /// /// 阶段 1:播放初始引导光点(飞行阶段) /// public void PlayInitialOrb() { orbBaseEffect.SetActive(true); orbBoomEffect.SetActive(false); orbQualityEffect.SetActive(false); orbBaseEffect.Play(4); // 播放索引为4的通用飞行效 } /// /// 阶段 2 & 3:执行爆开、显色、翻牌、展示流光的组合序列 /// /// 品质底色特效索引 /// 最终流光特效索引 /// 返回 Sequence 方便外部进行 Stagger(交错)排列 public Tween PlayExplosionFadeAndFlipReveal(int qualityIndex, int flowQualityIndex) { Sequence seq = DOTween.Sequence(); // [0.0s] 切换特效:关闭飞行态,触发爆发态 seq.InsertCallback(0f, () => { orbBaseEffect.SetActive(false); orbBoomEffect.SetActive(true); orbBoomEffect.Play(3); }); // [0.2s] 展示品质基色 seq.InsertCallback(0.2f, () => { orbQualityEffect.transform.localScale = Vector3.zero; orbQualityEffect.SetActive(true); orbQualityEffect.Play(qualityIndex); }); // 品质光团由小变大的回弹动画 seq.Insert(0.2f, orbQualityEffect.transform.DOScale(Vector3.one, 0.2f).SetEase(Ease.OutBack)); // [0.8s] 准备翻牌:激活 ItemCell 并设置 90 度侧向,准备旋转 seq.InsertCallback(0.8f, () => { itemCell.gameObject.SetActive(true); itemCell.transform.localEulerAngles = new Vector3(0, 90f, 0); }); // [0.8s] 翻转动作(耗时 0.3s):从 90 度旋转回 0 度 seq.Insert(0.8f, itemCell.transform.DOLocalRotate(Vector3.zero, 0.3f, RotateMode.Fast).SetEase(Ease.OutSine)); // [1.1s] 序列完结:清理临时特效,激活持久流光 seq.InsertCallback(1.1f, () => { orbBoomEffect.SetActive(false); orbQualityEffect.SetActive(false); flowEffect.SetActive(true); flowEffect.Play(flowQualityIndex); }); return seq; } }