2012-10-19 22 views
0

我有2个场景并希望将信息从一个传递给另一个。我在第一个场景中创建了一个脚本Constants,其中保留了我希望为下一个场景保存的数据。未将新值传递给尚未销毁的对象

这就是:

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

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

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

+3

我想你有2个常量的实例,因为'LoadLevel(“start”)';将再次创建一个实例。 – Kay

+1

我有一个脚本,我称之为“骡子”,基本上这样做。 https://gist.github.com/3919639 – Calvin

回答

2

你应该有一个“bootstrap”场景,所有东西都不会被销毁。这将是第一个场景。它会将你的“开始”称为“开始”(即没有0​​),并且始终会从后续场景中加载“开始”,也就是说,不会创建新的Constants,因为“bootstrap”总是被调用一次。