【问题标题】:Unity and Firebase Transaction Thread TrappedUnity 和 Firebase 事务线程被捕获
【发布时间】:2019-02-08 10:49:54
【问题描述】:

我目前正在使用 Firebase 和 Unity 进行开发。我遇到了线程冻结的问题。在统一编辑器中运行时不会出现该问题,仅在 Android 设备上运行时才会出现。

我有一个带按钮的场景。在 Button 按下时会发生 firebase 事务,并且场景会发生变化。我使用 Android Monitor 进行了调查,收到了一个转储,其中包含以下行:“IdleHandler 从 firebase 抛出异常”、“其他线程被困;signum = 11”、“主线程被困”

以下是在 GUI 中按下按钮时运行的代码示例。

好像和github上的这个问题有关:https://github.com/firebase/quickstart-unity/issues/181

public void on buttonPress()
{

        Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
        {
            var dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                //transaction code
                return TransactionResult.Success(data);
            }
            else
            {
                UnityEngine.Debug.LogError(System.String.Format(
                  "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                // Firebase Unity SDK is not safe to use here.
            }
        });


        // firebase code is running, now change scene 
        SceneManager.LoadScene("blah");
    }

【问题讨论】:

    标签: c# android firebase unity3d


    【解决方案1】:

    移动 SceneManager.LoadScene("blah");向上

    public void on buttonPress()
    {
    
            Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
            {
                console.log('before if'); //log something here
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    //transaction code
                    console.log('true')
                    return TransactionResult.Success(data);
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}", dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
                // firebase code is running, now change scene 
                SceneManager.LoadScene("blah");
            });
    }
    

    这意味着在异步完成并调用任务之前不会加载下一个场景

    【讨论】:

      猜你喜欢
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      相关资源
      最近更新 更多