51 lines
2.0 KiB
C#
51 lines
2.0 KiB
C#
using System;
|
||
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// 默认 P(倍数)爆奖事件:n 次爆奖,每次评分一个倍数。
|
||
/// 逻辑:
|
||
/// 爆奖次数由前端定义(awardCount);
|
||
/// 每次自增倍数 = 总倍数(bJbeishu,服务端下发) / 爆奖次数(awardCount)。
|
||
/// 流程:
|
||
/// Timeline/动画事件每完成一轮调用一次 BeiShuFX():beishunum += (bJbeishu / awardCount),
|
||
/// xiaoGuo_Effect 显示本轮自增,beishu 显示累计
|
||
/// → 全部轮次走完后 TimeLineEnd()/EndBJ() 结算(保证最终显示总倍数 bJbeishu)。
|
||
/// 字段 beishu/beishunum/xiaoGuo_Effect/EndBJ 继承自 BJBeishuEvent。
|
||
/// </summary>
|
||
public class DefaultPBBJEvent : BJBeishuEvent
|
||
{
|
||
[Header("爆奖次数(前端定义)")]
|
||
[Tooltip("总共爆 n 次,每次评分 = 总倍数 bJbeishu / 爆奖次数")]
|
||
public int awardCount = 1;
|
||
|
||
/// <summary>已触发的爆奖次数</summary>
|
||
public int currCount;
|
||
public Action jiafenEndAction;
|
||
/// <summary>
|
||
/// 每次爆奖触发(awardCount 次调用):按"总倍数/次数"自增倍数。
|
||
/// xiaoGuo_Effect 显示本轮自增倍数,beishu 从旧值递增到新累计值(不直接跳变)。
|
||
/// </summary>
|
||
public void BeiShuFX()
|
||
{
|
||
if (awardCount <= 0) awardCount = 1;
|
||
|
||
// 每次自增 = 总倍数 / 爆奖次数
|
||
int old = beishunum;
|
||
int step = Mathf.CeilToInt((float)bJbeishu / awardCount);
|
||
beishunum += step;
|
||
|
||
SetFieldText(xiaoGuo_Effect, xiaoGuo_UGUI, step.ToString());
|
||
RollBeiShu(old,0, jiafenEndAction); // 从 old 递增到 beishunum(递增动画,而非直接等于)
|
||
|
||
currCount++;
|
||
}
|
||
|
||
/// <summary>时间轴/动画事件结束:把累计倍数递增到总倍数后统一结算</summary>
|
||
public void TimeLineEnd()
|
||
{
|
||
// 累计可能因整除有余数而与总倍数不一致,从当前值递增到服务端总倍数后再结算
|
||
int old = beishunum;
|
||
beishunum = bJbeishu;
|
||
RollBeiShu(old, 0f, () => EndBJ());
|
||
}
|
||
} |