微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我在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:

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

public static class globalData
{
       public static bool SomeBooleanFlag;
}

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

选项#2:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐