加载场景统一时,将静态变量重置为零

时间:2017-08-23 15:29:38

标签: c# unity3d unity2d

我有一个问题我必须使用静态变量,因为如果我不使用它,如果我使用普通变量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");
        }



    }

2 个答案:

答案 0 :(得分:0)

将空GameObject添加到场景中,并使用此代码添加脚本:

void Start(){
    YourClass.end = 0;
}

YourClass是带有问题代码的脚本。

答案 1 :(得分:0)

如果在 MonoBehaviour 中使用静态变量,基本上都需要单独声明和初始化,初始化放到 Awake() 或 Start() 中。否则,在场景加载时重新初始化 MonoBehaviour 时,它们将保留其旧值,并且您在加载场景时会遇到问题。