Unity 游戏开发:如何控制行动点变化对饱食度的影响
在上述代码中,想要让只有掷骰子活动中的行动点变化不影响饱食度,可以在StartEvent()方法中添加一些逻辑判断。具体的做法是,在执行掷骰子活动之前,先保存当前的饱食度值,然后在掷骰子活动结束后恢复饱食度的值。
修改后的代码如下:
private IEnumerator StartEvent()
{
bool Success = true;
// 保存当前的饱食度值
int originalHungry = playerData.hungry;
// 扔骰子
if (RollDice == true)
{
DiceRandomPanel dicePanel = UIKit.OpenPanel<DiceRandomPanel>();
while (!UnityObjectUtility.IsDestroyed(dicePanel))
{
// 等待半秒钟
yield return new WaitForSeconds(0.5f);
}
// 取出骰子结果进行比对
if (DiceRandomPanel.RollResult < winRoll)
{
// 应用失败的Influence
Success = false;
}
}
if (Success)
{
// 优先influence
ApplyInfluence(influence);
}
else
{
ApplyInfluence(defeatInfluence);
}
// 恢复饱食度的值
playerData.hungry = originalHungry;
}
通过保存和恢复饱食度的值,可以确保只有掷骰子活动中的行动点变化不影响饱食度。而在其他物品交互时,仍然会按照原有的逻辑扣除饱食度。
另外,在AddActionPoint()方法中,可以根据行动点的变化来判断是否扣除饱食度。如果行动点小于0,则根据当前的饱食度值来决定是否扣除饱食度。修改后的代码如下:
public void AddActionPoint(int point)
{
this.playerData.actionPoint.Value += point;
if (point < 0)
{
// 只有饱食度小于等于40时,才扣除健康值
if (playerData.hungry <= 40)
{
AddHealth(point * 10);
}
// 每消耗一个行动点扣除五饱食度
AddHungry(point * 5);
}
}
通过以上修改,只有掷骰子活动中的行动点变化不会影响饱食度,而其他物品交互时仍然会按照原有的逻辑扣除饱食度。
原文地址: https://www.cveoy.top/t/topic/phg9 著作权归作者所有。请勿转载和采集!