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");
    }
}

但是,当我对此进行测试时,什么也没有发生。

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

4

1 回答 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

于 2013-11-10T14:07:56.200 回答