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

Unity中Firebase SetValueAsync()异步调用致编辑器冻结的原因

问题原因分析及解决方案

可能的原因:

  • Firebase未完成初始化:如果调用SetValueAsync时FirebaseApp还没完成初始化,异步任务会一直处于挂起状态,协程持续等待IsCompleted,表现为编辑器冻结。Firebase在Unity中初始化是异步流程,必须确保FirebaseApp.CheckAndFixDependenciesAsync()完成后再执行数据库操作。
  • 协程启动方式错误:如果没有通过StartCoroutine(SetCoinDB(xxx))启动协程,而是直接调用迭代器的MoveNext()方法,会把异步逻辑强制同步执行,直接阻塞主线程。
  • 网络/权限问题导致任务挂起:设备无网络连接,或者Firebase数据库的权限规则拒绝了当前请求,会让SetValueAsync的任务一直处于pending状态,协程无限等待,编辑器看起来像冻结。
  • 主线程隐性阻塞:虽然WaitUntil是协程暂停逻辑,但如果DBTask.IsCompleted长时间不触发,且主线程有其他高负载操作(比如大量UI渲染、循环计算),叠加后会让编辑器响应变慢,误以为是冻结。

修复建议:

  1. 确保Firebase初始化完成:在启动数据库操作前,先完成初始化流程,示例代码:
IEnumerator InitFirebaseThenSetCoin(int coinCount)
{
    var dependencyTask = FirebaseApp.CheckAndFixDependenciesAsync();
    yield return new WaitUntil(() => dependencyTask.IsCompleted);

    if (dependencyTask.Result != DependencyStatus.Available)
    {
        Debug.LogError("Firebase初始化失败");
        yield break;
    }

    // 初始化完成后再执行数据库操作
    yield return SetCoinDB(coinCount);
}
  1. 正确启动协程:必须通过Unity的StartCoroutine方法启动,比如:
// 在合适的逻辑节点调用
StartCoroutine(SetCoinDB(100));
  1. 添加超时机制:避免协程无限等待,给异步任务加超时判断:
private IEnumerator SetCoinDB(int coinCount)
{
    var DBTask = databaseReference.Child("users").Child(firebaseUser.UserId).Child("coins").SetValueAsync(coinCount + User.Instance.coin);
    
    float timeout = 10f;
    float elapsedTime = 0f;
    while (!DBTask.IsCompleted && elapsedTime < timeout)
    {
        elapsedTime += Time.deltaTime;
        yield return null;
    }

    if(elapsedTime >= timeout)
    {
        Debug.LogWarning("Coin更新超时");
        yield break;
    }

    if(DBTask.Exception != null)
    {
        Debug.LogWarning($"Coin update problem: {DBTask.Exception.Message}");
    }
    else
    {
        Debug.Log("Coins updated normally");
    }
}
  1. 检查网络与权限规则:确认设备有正常网络,同时检查Firebase控制台的数据库权限规则,确保当前用户有写入权限(测试阶段可临时设置为开放权限,上线前需修改为安全规则):
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:30:48