Unity:从不同场景访问UI InputField

时间:2017-05-10 15:21:56

标签: c# unity3d

当我向玩家询问他/她的名字时,我有第一个场景,我想在游戏场景中使用该名称。这是第一个场景的片段,包括我如何访问元素(它的工作原理):

public InputField nameInput;
DontDestroyOnLoad (nameInput);

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

现在我不知道为什么我无法从其他场景访问此元素?谢谢你的帮助!

1 个答案:

答案 0 :(得分: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");