C# 为什么firebase中的字符串返回null
当它离开匿名函数时,值返回null,但在它内部,如果它返回我需要获取的id,你知道如何获取string out值吗 firebase函数是一个异步函数,这意味着在异步函数完成之前(在成功或不成功状态下)不会运行内部回调 这意味着您的调试日志实际上是在异步函数的回调运行之前运行的 以下是一些您可以做的选择:C# 为什么firebase中的字符串返回null,c#,firebase,unity3d,firebase-authentication,C#,Firebase,Unity3d,Firebase Authentication,当它离开匿名函数时,值返回null,但在它内部,如果它返回我需要获取的id,你知道如何获取string out值吗 firebase函数是一个异步函数,这意味着在异步函数完成之前(在成功或不成功状态下)不会运行内部回调 这意味着您的调试日志实际上是在异步函数的回调运行之前运行的 以下是一些您可以做的选择: using System; public static Action OnSignInSuccess; 让firebase异步函数在准备就绪时调用回调函数 //Anom loggin
using System;
public static Action OnSignInSuccess;
//Anom loggin
auth.SignInAnonymouslyAsync().ContinueWith(task =>
{
if (task.IsCanceled)
{
Debug.LogError("SignInAnonymouslyAsync was canceled.");
return;
}
if (task.IsFaulted)
{
Debug.LogError("SignInAnonymouslyAsync encountered an error: " + task.Exception);
return;
}
Firebase.Auth.FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId);
userdataString = newUser.UserId;
Debug.Log("userdatastring: " + userdataString);
});
Debug.Log("userdatastring out: " + userdataString);
}
然后在firebase异步回调中,您可以执行以下操作:
using System;
public static Action OnSignInSuccess;
然后,其他脚本可以通过以下方式订阅和取消订阅此回调事件:
// ... within auth.SignInAnonymouslyAsync() callback
Firebase.Auth.FirebaseUser newUser = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId);
userdataString = newUser.UserId;
if(OnSignInSuccess != null)
OnSignInSuccess.Invoke();
}
3b。您还可以创建一个
公共UnityEvent onSignensAccess
并像单击按钮组件的onClick
回调一样对其进行配置;)
void OnEnable(){
YourScript.OnSignInSuccess += SignInSuccess;
}
void OnDisable(){
YourScript.OnSignInSuccess -= SignInSuccess;
}
private void SignInSuccess(){
Debug.Log("userdatastring: " + YourScript.staticInstance.userDataString);
}