为什么我的整数值在 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 两次。有没有可能是我漏掉了什么?
谢谢,
如果 IsPlayingCampaign1
和 IsPlayingCampaign2
都为真,则将 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;
}
我正在使用 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 两次。有没有可能是我漏掉了什么?
谢谢,
如果 IsPlayingCampaign1
和 IsPlayingCampaign2
都为真,则将 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;
}