如何将数据从一个场景传递到另一个场景?

时间:2019-04-24 05:44:41

标签: c# visual-studio unity3d

我想通过场景1中的InputField获取用户名,并访问用户在场景2中输入的用户名。我在场景1中具有InputField和Submit按钮。单击Submit按钮时,场景将发生变化。我该怎么办?

我尝试使用DontDestroyOnLoad(),但这对我没有用。

要更改我正在使用的场景SceneManager.LoadScene(name);

1 个答案:

答案 0 :(得分:1)

我想到了这一点。使用PlayerPrefs实现了您想要的

我创建了一个InputField并附加了一个名为Save的脚本,然后在检查器中的On End Event之后从该脚本调用了SaveText()

Save.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;


public class Save : MonoBehaviour
{
  InputField userNameField;

   void Start()
   {
    userNameField = GetComponent<InputField>();
   }

   public void SaveText()
   {        
      PlayerPrefs.SetString("userName", userNameField.text);
      Debug.Log(userNameField.text);
   }

    public void MoveScene(string sceneToLoad)
   {
    SceneManager.LoadScene(sceneToLoad);
   }
}

在下一个场景中,我将名为Load.cs的脚本附加到文本游戏对象上,并在Start()中获得了先前保存的该字符串的信息

Load.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Load : MonoBehaviour
{

Text userNameText;

  void Start()
  {
    userNameText = GetComponent<Text>();
    userNameText.text = PlayerPrefs.GetString("userName");

}

}

注意:我不知道这有多有效,但是确实可以做到