我有一个问题我必须使用静态变量,因为如果我不使用它,如果我使用普通变量italways打印(在我调试.log的点)1即使我点击gameobject 3次。它工作,但当我重新加载/加载一个新的场景时,一个场景变量保持相同,例如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");
}
}
答案 0 :(得分:0)
将空GameObject添加到场景中,并使用此代码添加脚本:
void Start(){
YourClass.end = 0;
}
YourClass是带有问题代码的脚本。
答案 1 :(得分:0)
如果在 MonoBehaviour 中使用静态变量,基本上都需要单独声明和初始化,初始化放到 Awake() 或 Start() 中。否则,在场景加载时重新初始化 MonoBehaviour 时,它们将保留其旧值,并且您在加载场景时会遇到问题。