加载场景统一时将静态变量重置为零
Reseting a static variable back to zero when loading a scene unity
我有一个问题,我必须使用静态变量,因为如果我不使用它,如果我使用普通变量,它总是打印(在我 debug.log 的地方)1,即使我点击游戏对象 3 次.它有效,但是当我 reload/load 一个新场景时,场景变量保持不变,例如 2,但我需要它为 0。
基本上它工作正常我只需要在加载当前场景后重新设置变量。
public static int end;
void OnMouseDown(){
end +=1;
Debug.Log (end);
if (end == 1) {
Vector2 pos1 = new Vector2 (-6,0);
Instantiate (Redstar,pos1,Quaternion.identity);
}
else if ( end == 2 ) {
Vector2 pos2 = new Vector2 (-5,0);
Instantiate (Redstar, pos2,Quaternion.identity);
}
else if ( end ==3 ) {
Vector2 pos3 = new Vector2 (-4,0);
Instantiate (Redstar, pos3,Quaternion.identity);
GameObject.Find ("ballon").SendMessage ("Finnish");
}
}
向场景中添加一个空的 GameObject 并向其中添加包含以下代码的脚本:
void Start(){
YourClass.end = 0;
}
YourClass 是带有问题代码的脚本。
如果在MonoBehaviour中使用静态变量,基本上需要单独声明和初始化,初始化放在Awake()或Start()中。否则,当 MonoBehaviour 在场景加载时重新初始化时,它们将保留其旧值,并且在加载场景时会出现问题。
我有一个问题,我必须使用静态变量,因为如果我不使用它,如果我使用普通变量,它总是打印(在我 debug.log 的地方)1,即使我点击游戏对象 3 次.它有效,但是当我 reload/load 一个新场景时,场景变量保持不变,例如 2,但我需要它为 0。 基本上它工作正常我只需要在加载当前场景后重新设置变量。
public static int end;
void OnMouseDown(){
end +=1;
Debug.Log (end);
if (end == 1) {
Vector2 pos1 = new Vector2 (-6,0);
Instantiate (Redstar,pos1,Quaternion.identity);
}
else if ( end == 2 ) {
Vector2 pos2 = new Vector2 (-5,0);
Instantiate (Redstar, pos2,Quaternion.identity);
}
else if ( end ==3 ) {
Vector2 pos3 = new Vector2 (-4,0);
Instantiate (Redstar, pos3,Quaternion.identity);
GameObject.Find ("ballon").SendMessage ("Finnish");
}
}
向场景中添加一个空的 GameObject 并向其中添加包含以下代码的脚本:
void Start(){
YourClass.end = 0;
}
YourClass 是带有问题代码的脚本。
如果在MonoBehaviour中使用静态变量,基本上需要单独声明和初始化,初始化放在Awake()或Start()中。否则,当 MonoBehaviour 在场景加载时重新初始化时,它们将保留其旧值,并且在加载场景时会出现问题。