58 lines
2.2 KiB
C#
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();
|
|
};
|
|
}
|
|
}
|