在Unity中的场景之间访问信息

时间:2013-11-10 13:57:21

标签: c# unity3d

我在Unity中有一个类,它有一个切换开关列表,可以在与游戏其余部分不同的场景中打开和关闭。我想要的是让用户选择一个按钮,然后当我们回到那个场景时,我的主游戏中会发生相应的动作。但是,我在场景之间发送信息时遇到问题。

目前我的切换课程看起来像这样:

private bool action1 = false;
public bool Action1
{
    get { return action1;}
}

void OnGUI() 
{
    action1 = GUI.Toggle(new Rect(10, 10, 100, 30), action1, "test");   
}

void Update()
{
    if(Input.GetButton("Jump"))
    {
        Application.LoadLevel("Main");
    }
}

然后在我的主场景中的一个班级中,我有以下代码:

private ActionClass actionIsOn = new ActionClass();
void Start() 
{
    if(actionIsOn.Action1 == true)
    {
        Debug.Log("action is on");
    }
    else
    {
        Debug.Log("nothing happening");
    }
}

然而,当我测试时,没有任何反应。

我是否正确设置了它?有没有更好的方法将这些信息从一个场景传递到另一个场景?

1 个答案:

答案 0 :(得分:7)

选项#1:

使用静态类来保存与多个场景相关的全局信息。

public static class GlobalData
{
       public static bool SomeBooleanFlag;
}

这样在你的第一个场景中你可以将GlobalData.SomeBooleanFlag设置为某个值,在第二个场景中你可以检查它。

选项#2:

您可以使用Object.DontDestroyOnLoad确保加载新场景时场景中的对象不会被破坏。这样,您可以聚合要传递到单个对象中的其他场景的所有信息(或使用多个对象,并使它们全部保持活动状态),并确保即使在场景发生变化后它仍然保持活动状态。

http://docs.unity3d.com/Documentation/ScriptReference/Object.DontDestroyOnLoad.html