我正在使用 C# 在 Unity 中开发游戏。部分代码使用布尔值决定是否允许玩家购买建筑物的升级。如果是,则建筑物的整数加 1。接下来,布尔值设置为 false。如果他不是,那么此刻什么都不会发生。
游戏中有一个按钮,在功能上将周数增加 1,允许玩家再次能够升级建筑(因此再次将布尔值设置为 true)。
问题是购买升级后,布尔值设置为false,即使我再次将其设置回true,当我尝试升级建筑物时,布尔值似乎为false。我还尝试借助整数而不是布尔值(使用值 0 和 1)来检查它,但问题仍然存在。
这是一些代码:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ActivateTrigger : MonoBehaviour
{
public int transtech = 0;
public int factech = 0;
public bool facmag = true;
public bool transmag = true;
void OnGUI () {GUI.Box(new Rect(0, Screen.height - 120 - 60, 150, 30), "Week: " + week.ToString());
if (GUI.Button(new Rect(0, Screen.height - 120 - 30, 150, 20), "Continue one week"))
{
NextProcess();
}
if (GUI.Button(new Rect(20, 70, 120, 20), "Koop upgrade") )
{
Debug.Log("Facmag: " + facmag);
if (facmag == true)
{
facmag = false;
}
}
void NextProcess()
{
Debug.Log("Next process called");
facmag = true;
transmag = true;
Debug.Log("Facmag: " + facmag);
}
}
因此,当调用 NextProcess() 时,调试日志显示该值为 true。但是在第一次购买升级后,无论我是否按下按钮执行 NextProcess(),该值都保持为 false。我想知道我是否完全错过了一些东西。这个类中没有其他代码使用布尔值,我所拥有的其他几个类也没有。那么问题出在哪里呢?