在上述代码中,想要让只有掷骰子活动中的行动点变化不影响饱食度,可以在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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录