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

4

我在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个回答

7

选项1:

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

public static class GlobalData
{
       public static bool SomeBooleanFlag;
}

在你的第一个场景中,你可以将GlobalData.SomeBooleanFlag设置为某个值,在第二个场景中,你可以检查它。
选项#2:
你可以使用Object.DontDestroyOnLoad确保在新场景加载时不会销毁场景中的对象。这样,你可以将要传递给其他场景的所有信息汇聚到一个单一的对象(或使用多个对象,并使它们全部保持活动状态),并确保在场景改变后仍然保持其状态。 http://docs.unity3d.com/Documentation/ScriptReference/Object.DontDestroyOnLoad.html

此外,您可以将数据写入PlayerPrefs中,这样可以在游戏会话之间保留数据。但在这种情况下,我仍然认为静态变量是最佳选择。 - MichaelTaylor3D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接