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