当我向玩家询问他/她的名字时,我有第一个场景,我想在游戏场景中使用该名称。这是第一个场景的片段,包括我如何访问元素(它的工作原理):
public InputField nameInput;
DontDestroyOnLoad (nameInput);
/2 ways of accessing the UI element
GameObject.Find("NameInput").GetComponent<InputField>().text;
nameInput;
现在我不知道为什么我无法从其他场景访问此元素?谢谢你的帮助!
答案 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");