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

问题描述 投票:-1回答:1

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

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

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

c# visual-studio unity3d
1个回答
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()中,我获得了之前保存的String的信息。

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");

}

}

注意:我不知道这是多么有效,但它确实有效

© www.soinside.com 2019 - 2024. All rights reserved.