Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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# Can';不要在另一个场景中调用playerprefs_C#_Unity3d - Fatal编程技术网

C# Can';不要在另一个场景中调用playerprefs

C# Can';不要在另一个场景中调用playerprefs,c#,unity3d,C#,Unity3d,因此,我在这里想检索字符串,以在不同的场景中使用文本,但在我自己尝试后,它不起作用,我做错了吗 这里是谷歌签名脚本,我想将字符串task.result.displayName与Playerprefs internal void OnAuthenticationFinished(Task<GoogleSignInUser> task) { if (task.IsFaulted) { using (IEnumerator<Exception>

因此,我在这里想检索字符串,以在不同的场景中使用文本,但在我自己尝试后,它不起作用,我做错了吗

这里是谷歌签名脚本,我想将字符串
task.result.displayName
Playerprefs

internal void OnAuthenticationFinished(Task<GoogleSignInUser> task)
{
    if (task.IsFaulted)
    {
        using (IEnumerator<Exception> enumerator = task.Exception.InnerExceptions.GetEnumerator())
        {
            if (enumerator.MoveNext())
            {
                GoogleSignIn.SignInException error = (GoogleSignIn.SignInException)enumerator.Current;
                AddToInformation("Got Error: " + error.Status + " " + error.Message);
            }
            else
            {
                AddToInformation("Got Unexpected Exception?!?" + task.Exception);
            }
        }
    }
    else if (task.IsCanceled)
    {
        AddToInformation("Canceled");
    }
    else
    {

        AddToInformation("Welcome: " + task.Result.DisplayName + "!");
        AddToInformation("Email = " + task.Result.Email);
        AddToInformation("Google ID Token = " + task.Result.IdToken);
        AddToInformation("Email = " + task.Result.Email);
        SignInWithGoogleOnFirebase(task.Result.IdToken);

        currEmail = task.Result.DisplayName;
        PlayerPrefs.SetString("Username " + currEmail, currEmail);
        Debug.Log(currEmail);
    }
private void AddToInformation(string str) { infoText.text += "\n" + str; }
但是为什么这不起作用,对于您的信息,我没有在google sign脚本上使用
DontDestroyOnload,所以我在场景和主菜单场景中附加了一个标志

PlayerPrefs.Save();
在SetString方法之后,将数据保存在prefs中

检查googleSign.currEmail在debug中是否有值,如果您的字符串有误,应该是

PlayerPrefs.GetString("Username " + googleSign.currEmail) 
没有

+ "Username "

最后

currEmail=task.Result.DisplayName;PlayerPrefs.SetString(“用户名”+currEmail,currEmail);PlayerPrefs.Save()像那样?是的,当你刚刚设置字符串时,你的数据不保存谢谢,我已经尝试过了,但是仍然不起作用。首先调试googleSign.currEmail的值,如果它们相同的话。加载新场景时,该变量将重置。将currEmail变量设为静态,并查看它是否会保留该值。
+ "Username "