不将新值传递给尚未销毁的对象

时间:2012-10-19 12:47:44

标签: unity3d

我有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");

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

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

2 个答案:

答案 0 :(得分:2)

你应该有一个“bootstrap”场景,其中包含所有不会被破坏的东西。这将是第一个场景。它会调用你的“开始”(没有Constants)并且你总是从后续场景加载“start”,也就是说,自“bootstrap”以来不会创建新的Constants在开始时总是被称为一次。

答案 1 :(得分:0)

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