为什么我的整数值在 Unity3D 中增加不止一次

Why is my integer value increasing more than once in Unity3D

我正在使用 Unity3D 和 C# 创建游戏。我有一些代码可以在玩家赢得关卡时将硬币数加 5。这是由以下内容组成的:

if (scoreText.scoreNum >= NumberOfBricksNeeded)
    {
        if(HasClickedOk == false)
        {
            LevelFinishedUIs.SetActive(true);

            if (IsPlayingCampaign1 == true)
            {
                coins.CoinNumber += 5;
                dead.GameOver = false;
                FinishedLevel1UI.SetActive(true);
                Debug.Log("FinishedLevel");
                IsPlayingCampaign1 = false;
                isPlayingCampaign = false;
                HasClickedOk = true;
                One.sprite = OneFin;
                skins.HasEarnedGoldSkin = true;
                skinSaver.Gold = true;
                
                
                campaignSaver.LevelsCompleted = 1;
                
            }

            if (IsPlayingCampaign2 == true)
            {
                coins.CoinNumber += 5;
                dead.GameOver = false;
                FinishedLevel2UI.SetActive(true);
                Debug.Log("FinishedLevel");
                IsPlayingCampaign2 = false;
                isPlayingCampaign = false;
                HasClickedOk = true;
                TwoA.sprite = TwoAFin;
                skins.HasEarnedMeteorSkin = true;
                skinSaver.Meteor = true;
                
                
                campaignSaver.LevelsCompleted = 2;
            }

虽然第一个起作用并加了 5,但第二个不起作用。问题是它将 10 添加到数字而不是 5。我检查了 'HasClickedOk' 和 'isPlayingCampaign_' 等值,但它们都是合适的值。本来以为是运行两次。但是,我将硬币数量记录到控制台,它们直接增加了 10。不是 5 两次。有没有可能是我漏掉了什么?

谢谢,

如果 IsPlayingCampaign1IsPlayingCampaign2 都为真,则将 10 添加到硬币中而不明确添加到其他地方的唯一方法。

因为你不使用 if-else,所以两个 if 块都在一个接一个地执行,添加 5 个硬币 x2。

做第二个if,一个else语句。

if (scoreText.scoreNum >= NumberOfBricksNeeded)
    {
        if(HasClickedOk == false)
        {
            LevelFinishedUIs.SetActive(true);

            if (IsPlayingCampaign1 == true)
            {
                coins.CoinNumber += 5;
                dead.GameOver = false;
                FinishedLevel1UI.SetActive(true);
                Debug.Log("FinishedLevel");
                IsPlayingCampaign1 = false;
                isPlayingCampaign = false;
                HasClickedOk = true;
                One.sprite = OneFin;
                skins.HasEarnedGoldSkin = true;
                skinSaver.Gold = true;
                
                
                campaignSaver.LevelsCompleted = 1;
                
            }

            else if (IsPlayingCampaign2 == true)
            {
                coins.CoinNumber += 5;
                dead.GameOver = false;
                FinishedLevel2UI.SetActive(true);
                Debug.Log("FinishedLevel");
                IsPlayingCampaign2 = false;
                isPlayingCampaign = false;
                HasClickedOk = true;
                TwoA.sprite = TwoAFin;
                skins.HasEarnedMeteorSkin = true;
                skinSaver.Meteor = true;
                
                
                campaignSaver.LevelsCompleted = 2;
            }