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 "