2017-05-10 35 views
0

私はプレイヤーに自分の名前を尋ねたときに最初のシーンを持ち、ゲームシーンでその名前を使用したいと思います。ここで私は要素にアクセスする方法など、最初のシーンのスニペットは、(それが動作する)です:Unity:別のシーンからUIにアクセスするInputField

public InputField nameInput; 
DontDestroyOnLoad (nameInput); 

/2 ways of accessing the UI element 
GameObject.Find("NameInput").GetComponent<InputField>().text; 
nameInput; 

私は他のシーンからこの要素にアクセスすることはできませんなぜ今、私は知らないのですか?ご協力いただきありがとうございます!

答えて

3

私は答えがかなり明らかだと思います。シーンを変更する場合、前のシーンのオブジェクトはすべてが破棄されたです(ただし、DontDestroyOnLoadという特定の関数を呼び出す場合を除く)。この関数はルートオブジェクトでと呼びます。

名前をの永続的な場所に保存する必要があります。

あなたが探しているのはデータの永続性です。 Unityは、このトピックに関するチュートリアルがあります。https://unity3d.com/fr/learn/tutorials/topics/scripting/persistence-saving-and-loading-data

この記事は、私の意見でもかなりいいです:あなたのケースではhttp://naplandgames.com/blog/2016/11/27/saving-data-in-unity-3d-serialization-for-beginners/

、シンプルPlayerPrefsは十分でしょう。

// First scene : 
PlayerPrefs.SetString("Player Name", nameInput.text); 

// ... 

// Second scene : 
string playerName = PlayerPrefs.GetString("Player Name"); 
+0

あなたはそれに私を打ちます:) – Kardux

+0

ありがとう、ちょうど私が探していたもの! – Twister013

関連する問題