Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将数据从一个场景传递到另一个场景?_C#_Visual Studio_Unity3d - Fatal编程技术网

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

C# 如何将数据从一个场景传递到另一个场景?,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,我想通过场景1中的InputField获取用户名,并访问用户在场景2中输入的用户名。我在场景1中有一个InputField和一个submit按钮。单击“提交”按钮时,场景将更改。我该怎么做呢 我试着使用DontDestroyOnLoad(),但这对我不起作用 要更改我正在使用的场景,请使用SceneManager.LoadScene(name)我想到了这个。我使用PlayerPrefs实现了您想要的 我创建了一个InputField并附加了一个名为Save的脚本,然后在inspector中的On

我想通过场景1中的InputField获取用户名,并访问用户在场景2中输入的用户名。我在场景1中有一个InputField和一个submit按钮。单击“提交”按钮时,场景将更改。我该怎么做呢

我试着使用
DontDestroyOnLoad()
,但这对我不起作用


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

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

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

保存.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);
   }
}
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");

}

}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
使用UnityEngine.SceneManagement;
公共类储蓄:单一行为
{
InputField userNameField;
void Start()
{
userNameField=GetComponent();
}
公共void SaveText()
{        
PlayerPrefs.SetString(“用户名”,userNameField.text);
Log(userNameField.text);
}
公共场景(字符串场景加载)
{
SceneManager.LoadScene(sceneToLoad);
}
}
在下一个场景中,我将名为Load.cs的脚本附加到一个文本游戏对象,在Start()中,我获得了先前保存的字符串的信息

加载.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);
   }
}
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");

}

}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类负载:单一行为
{
文本用户名文本;
void Start()
{
userNameText=GetComponent();
userNameText.text=PlayerPrefs.GetString(“用户名”);
}
}

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

您是否尝试过使用PlayerPrefs和静态脚本,请查看-@PraveenPanishetti:我尝试过使用PlayerPrefs,但由于我是一名初学者,我对其理解不多。您能帮我一下吗?
DontDestroyOnLoad
有什么问题吗?
DontDestroyOnLoad()。您确定正确使用了它吗?因此您只希望访问数据?然后你们可以把它放在一个公共字段中,然后在场景中用另一个脚本访问它2@MD这是最简单的方法,因为你是初学者。然而,如果你想看看有什么不同的方法,请阅读我上面的评论。