0

2 つのシーンがあり、1 つのシーンから別のシーンに情報を渡したいと考えています。最初のシーンで、次のシーンのために保存したいデータを保持する空のゲーム オブジェクトに定数スクリプトを作成しました。

ここにあります:

public class Constants : MonoBehaviour {

    public string scratchImageFront;
    public string scratchImageBack;

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

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

} 

次のシーンに移る前に、Constants スクリプトを破棄しないように呼び出します。

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

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

次に、2 番目のシーンでデータを収集しますが、すべて問題ありません。2 番目のシーンが終わったら、最初のシーンに戻ります。

Application.LoadLevel("start");

そして、最初に行ったのと同じ手順をやり直します。Constants スクリプトは、渡された新しい文字列を保持せず、古い文字列を保持します。なんで?

すべてが正常に機能するように、2 番目のシーンでコンスタント スクリプトを破棄する必要がありますが、これは望ましくありません。私は何を間違っていますか?

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 に答える