71 lines
3.0 KiB
C#
71 lines
3.0 KiB
C#
using System;
|
||
using System.Collections;
|
||
using TMPro;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
|
||
/// <summary>
|
||
/// 倍数爆奖二层基类(分 n 次加爆奖倍数)。
|
||
/// 与积分型 BJRedPacketEvent 对称:积分走"红包 + 分数面板 + 滚分",倍数走"累计倍数 + 结算"。
|
||
///
|
||
/// 提供倍数型子类共用能力:
|
||
/// beishu/beishu_UGUI(累计倍数)、beishunum(累计值)
|
||
/// chengshu/chengshu_UGUI(底分成数)、xiaoGuo_Effect/xiaoGuo_UGUI(本轮加成倍数)
|
||
/// 每个显示项都支持两种文本组件:TextMeshProUGUI 或 UnityEngine.UI.Text,拖哪个就用哪个
|
||
/// SetBeiShu(更新累计倍数,子类可 override 加滚动动画)
|
||
/// EndBJ(统一结算入口)→ OnScoreEnd(JiaFen + BJEndUI + die)
|
||
///
|
||
/// 子类职责:实现倍数玩法(转盘/翻牌/Timeline 轮次……),
|
||
/// 写入倍数时用 SetFieldText(...)(TMP 优先、UGUI 兜底),结束调 EndBJ。
|
||
/// </summary>
|
||
public class BJBeishuEvent : BJRedPacketEvent
|
||
{
|
||
[Header("倍数显示")]
|
||
public TextMeshProUGUI beishu; // 累计倍数显示(TMP)
|
||
public Text beishu_UGUI; // 累计倍数显示(UGUI,备用)
|
||
public int beishunum; // 累计倍数
|
||
public TextMeshProUGUI chengshu; // 底分(成数)显示(TMP)
|
||
public Text chengshu_UGUI; // 底分(成数)显示(UGUI,备用)
|
||
public TextMeshProUGUI xiaoGuo_Effect; // 本轮效果/加成倍数显示(TMP)
|
||
public Text xiaoGuo_UGUI; // 本轮效果/加成倍数显示(UGUI,备用)
|
||
|
||
[Header("倍数递增动画")]
|
||
[Tooltip("累计倍数从旧值滚到新值的时长(不直接跳变)")]
|
||
public float beiShuRollDuration = 0.5f;
|
||
|
||
/// <summary>写文本:优先 TMP,否则用 UGUI(两个字段在同一显示项上二选一拖)</summary>
|
||
protected void SetFieldText(TextMeshProUGUI tmp, Text ugui, string value)
|
||
{
|
||
if (tmp != null) tmp.text = value;
|
||
else if (ugui != null) ugui.text = value;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 累计倍数递增显示:从 fromRoll 一点一点滚到 beishunum(而非直接等于)。
|
||
/// 复用基类 RollNumber,自动停止上一次未完成的滚动。
|
||
/// </summary>
|
||
protected void RollBeiShu(int fromRoll, float duration = 0f, Action onDone = null)
|
||
{
|
||
if (duration <= 0f) duration = beiShuRollDuration;
|
||
RollNumber(
|
||
v => SetFieldText(beishu, beishu_UGUI, v.ToString()),
|
||
fromRoll, beishunum, duration, onDone);
|
||
}
|
||
|
||
/// <summary>更新累计倍数显示(子类可 override 加滚动动画,如 FLXJEvent)</summary>
|
||
public virtual void SetBeiShu()
|
||
{
|
||
SetFieldText(beishu, beishu_UGUI, beishunum.ToString());
|
||
}
|
||
|
||
/// <summary>结束爆奖:走基类统一结算(JiaFen + BJEndUI + die)</summary>
|
||
public void EndBJ()
|
||
{
|
||
GameManager.Instance.StartCoroutine(yanchi());
|
||
}
|
||
IEnumerator yanchi()
|
||
{
|
||
yield return new WaitForSeconds(1f);
|
||
OnScoreEnd();
|
||
}
|
||
} |