0

我有 2 个场景,希望将信息从一个场景传递到另一个场景。我在第一个场景中在一个空游戏对象上创建了一个脚本常量,它保​​留了我希望为下一个场景保存的数据。

这里是:

public class Constants : MonoBehaviour {

    public string scratchImageFront;
    public string scratchImageBack;

    void setScratchFront(string _scratchFront)
    {
       scratchImageFront = _scratchFront;
    }

    void setScratchBack(string _scratchBack)
    {   
       scratchImageBack = _scratchBack;
    }

} 

在进入下一个场景之前,我呼吁不要破坏常量脚本:

     GameObject constants = GameObject.Find("Constants");
     Constants script;
     script = constants.transform.GetComponentInChildren<Constants>();

     DontDestroyOnLoad(constants);
     Application.LoadLevel("scratch");

然后我在第二个场景中收集数据,一切都很好。在我完成第二个场景之后,我回到我的第一个场景

Application.LoadLevel("start");

并重做与我第一次相同的步骤,常量脚本不保留传递给它的新字符串,它保留旧字符串。为什么?

我需要在我的第二个场景中销毁常量脚本,以便一切正常,但我不想要这个。我究竟做错了什么?

4

2 回答 2

2

您应该有一个“引导”场景,其中包含所有不会被破坏的东西。这将是第一个场景。它会调用您的“开始”(没有Constants),并且您将始终从后续场景加载“开始”,也就是说,不会Constants创建新的,因为“引导程序”总是在开始时被调用一次。

于 2012-10-20T14:57:03.327 回答
0

另一种解决方案是创建一个静态类;这是answers.unity上相同问题的链接:http: //answers.unity3d.com/questions/334959/not-passing-new-values-to-object-that-has-not-been.html

于 2012-10-24T10:13:08.403 回答