使用Unity5和C#从输入字段中获取字符串并在另一个场景中显示字符串

Using Unity5 and C# get strings from input fields and display strings in another scene

我创建了一个不会在加载时销毁的游戏对象。我希望它成为输入数据的容器,以便我可以访问另一个场景中的字符串。问题是如何将输入文本字段中的用户输入输入到我的游戏对象中,并返回到另一个场景中的文本字段中。我在想我可以使用附加到检查器中输入字段的内置脚本 On End Edit(字符串)脚本,以便将输入传递给我的游戏对象。我的目标是从用户输入中获取字符串并在另一个场景中很好地显示所有格式。我还标记了我所有的输入字段,并将脚本附加到我的游戏对象,该脚本可以找到所有带有标签的游戏​​对象。这可能是获取字符串的更好方法。

我会使用 playerprefs 为另一个会话保存数据。如果你只想保存另一个场景的数据,使用静态class。你甚至不需要 "Dontdestroyonload"

在您的项目中创建此 class:

public static class ExampleUserData
{
    public static string MyUserData1;
    public static string MyUserData2;
    //etc..
}

将此 class 附加到场景 1 中的游戏对象:

using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class ExampleScene1 : MonoBehaviour
{
    InputField input1;
    InputField input2;

    void Awake()
    {
        //input1 = something...;
        //input2 = something...;
    }

    void LoadScene2()
    {
        ExampleUserData.MyUserData1 = input1.text;
        ExampleUserData.MyUserData2 = input2.text;

        SceneManager.LoadScene("Scene2");
    }
}

第二个场景中的这个:

using UnityEngine;
using UnityEngine.UI;

public class ExampleScene2 : MonoBehaviour
{
    InputField input1;
    InputField input2;

    void Awake()
    {
        //input1 = something...;
        //input2 = something...;
    }

    void Start()
    {
        input1.text = ExampleUserData.MyUserData1;
        input2.text = ExampleUserData.MyUserData2;
    }
}

替换 Awake() 中的代码以查找您的输入字段。