私は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のままです。何かを完全に見逃したのではないかと思います。このクラスの他のコードはブール値を使用していません。また、私が持っている他のいくつかのクラスも使用していません。では、問題はどこにあるのでしょうか。