Files
5.24BuYu/Assets/MyGame/aa/Game/HHWK/Boss/YangJian/YangJianBJEvent.cs
T
2026-08-25 17:00:03 +08:00

58 lines
2.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class YangJianBJEvent : BJBeishuEvent
{
[Header("爆奖次数(前端定义)")]
[Tooltip("总共爆 n 次,每次评分 = 总倍数 bJbeishu / 爆奖次数")]
public int awardCount = 1;
/// <summary>已触发的爆奖次数</summary>
public int currCount;
public Action jiafenEndAction;
/// <summary>最近一个阶段递增到的数值(供结算时作为递增起点,避免画面跳变)</summary>
private int _stageShown;
/// <summary>
/// 每次爆奖触发(awardCount 次调用):按"总倍数/次数"自增倍数。
/// 阶段性递增效果:每次从 0 滚到"每次自增 step",而非从旧累计值连续滚。
/// stageDuration 为单个阶段的滚动时长(0 用 beiShuRollDuration)。
/// </summary>
public void BeiShuFX(float stageDuration = 0f)
{
if (awardCount <= 0) awardCount = 1;
// 每次自增 = 总倍数 / 爆奖次数
int step = Mathf.CeilToInt((float)bJbeishu / awardCount);
beishunum += step;
SetFieldText(xiaoGuo_Effect, xiaoGuo_UGUI, step.ToString());
// 阶段性递增:从 0 → 每次自增 step(加参数控制每阶段滚动时长)
if (stageDuration <= 0f) stageDuration = beiShuRollDuration;
RollNumber(v => SetFieldText(beishu, beishu_UGUI, v.ToString()), 0, step, stageDuration, jiafenEndAction);
_stageShown = step;
currCount++;
}
/// <summary>时间轴/动画事件结束:从最后阶段值递增到服务端总倍数后统一结算</summary>
public void TimeLineEnd()
{
// 累计可能因整除有余数而与总倍数不一致,从最后阶段值递增到总倍数后再结算
int from = _stageShown;
beishunum = bJbeishu;
RollNumber(v => SetFieldText(beishu, beishu_UGUI, v.ToString()), from, bJbeishu, beiShuRollDuration, () => EndBJ());
}
public Text text_BeiShu;
private void Awake()
{
jiafenEndAction = () =>
{
text_BeiShu.text=beishunum.ToString();
};
}
}