You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase认证出现NullReferenceException,求排查Unity配置或代码问题

解决Unity中Firebase Authentication的NullReferenceException问题

Hey,我之前在Unity里折腾Firebase Auth的时候也碰到过一模一样的空引用错误,大概率是下面几个常见坑之一,咱们一步步排查:

1. Firebase Auth实例还没初始化就被调用了

你直接在代码开头就赋值auth = Firebase.Auth.FirebaseAuth.DefaultInstance,但Firebase在Unity里需要先完成依赖检查和初始化流程——如果FirebaseApp还没准备好,DefaultInstance会返回null,这时候调用auth.CreateUserWithEmailAndPasswordAsync肯定会炸。

解决办法:
把Auth实例的初始化放在Firebase依赖检查完成之后,比如在Start()方法里做:

private Firebase.Auth.FirebaseAuth auth;

void Start()
{
    // 先检查并修复Firebase依赖,确保初始化完成
    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
    {
        var dependencyStatus = task.Result;
        if (dependencyStatus == Firebase.DependencyStatus.Available)
        {
            // 现在可以安全获取Auth实例了
            auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
            Debug.Log("Firebase Auth initialized successfully!");
        }
        else
        {
            Debug.LogError($"Failed to resolve Firebase dependencies: {dependencyStatus}");
        }
    });
}

2. UI输入控件没赋值,导致m_Emailadress或m_RegisterPassword为null

你代码里用了m_Emailadress.ToString()和m_RegisterPassword.ToString(),如果这两个是Unity的InputField控件,但你没在Inspector面板给它们拖入对应的组件,那调用ToString()的时候就会触发空引用。

另外提个小细节:InputField的文本不用ToString(),直接用.text属性就行,ToString()反而可能搞出问题。

解决办法:

  • 先去Inspector面板,确认m_Emailadress和m_RegisterPassword已经关联了场景里的InputField;
  • 在使用前加个null检查,避免崩溃:
public void FirebaseInfo() {
    // 先检查输入控件是否存在
    if (m_Emailadress == null || m_RegisterPassword == null)
    {
        Debug.LogError("Email或Password输入框没赋值啊兄弟!");
        return;
    }

    email = m_Emailadress.text;
    password = m_RegisterPassword.text;

    // 这里再确保auth实例不为null
    if (auth == null)
    {
        Debug.LogError("Firebase Auth实例还没初始化完成!");
        return;
    }

    auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
        // 你的现有代码...
    });
}

3. 线程上下文的小坑(次要但值得注意)

虽然你的错误是空引用,但后续如果在ContinueWith里要访问Unity的UI元素,可能会因为后台线程执行而出问题。可以加上TaskScheduler.FromCurrentSynchronizationContext()确保回到主线程执行:

auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task =>
{
    // 你的现有代码...
}, TaskScheduler.FromCurrentSynchronizationContext());

排查优先级

先检查UI控件有没有赋值(这个是新手最容易踩的坑),再确认Firebase的初始化流程是否正确,基本上就能解决问题了。

内容的提问来源于stack exchange,提问作者thefudgeishot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:42:33