firebase 如何在更改场景时删除“它所依赖的应用程序”之前的Auth对象?

uklbhaso  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(161)

bounty将在2天内过期。回答此问题可获得+100声望奖励。Evorlor正在寻找来自信誉良好的来源的**答案 *。

因此,在我的AR应用程序中使用Firebase Auth和存储。在完成登录和资产捆绑包下载后,我的脚本将用户引导到下一个场景(通过SceneManager.LoadScene()),在那里他们可以与他们的内容进行交互。
但是,在场景切换时,此错误会导致在不一致的基础上重新编辑:
应用例外:验证对象0x 7586 a0 f0应在它所依赖的应用程序0x 77 b799 a0之前删除。Firebase.FirebaseApp.ReleaseReferenceInternal(Firebase.FirebaseApp应用程序)(at Z:/tmp/tmp.n6hJS53AxW/firebase/app/client/unity/proxy/FirebaseApp.cs:998)Firebase.FirebaseApp.RemoveReference()(at Z:/tmp/tmp.n6hJS53AxW/firebase/app/client/unity/proxy/FirebaseApp.cs:293)Firebase.FirebaseApp.Dispose()(at Z:/tmp/tmp.n6hJS53AxW/firebase/app/client/unity/proxy/FirebaseApp.cs:51)Firebase.FirebaseApp.Finalize()(at Z:/tmp/tmp.n6hJS53AxW/firebase/app/client/unity/proxy/FirebaseApp.cs:47)UnityEngine. UnhandledExceptionError:m__0(Object,UnhandledExceptionEventArgs)
如何在场景切换之前删除Auth对象?我试过auth.Dispose()auth.SignOut(),没有成功。

zxlwwiss

zxlwwiss1#

不看代码很难看到确切的问题。
无论如何,我怀疑问题在于这样一个事实,即大多数Auth API调用将随机发生,这意味着在API调用之后声明的代码可能会在API方法完成执行之前运行。
也许您应该使封装方法异步化,然后在加载场景之前完成API调用。
否则,如果在加载场景之前完成此操作并不重要,并且您有性能开销,则可以添加加载场景,然后仅在销毁auth obj后卸载前一个场景。
PS.如果这仍然没有帮助你,那么请添加您的代码的问题,以帮助我们帮助你。

lnvxswe2

lnvxswe22#

您遇到的问题可能是由于在场景切换之前销毁Auth对象的方式造成的。在某些情况下,这可能会导致意外行为或阻止对象正确销毁。
你可以考虑一种不同的方法,而不是手动处理Auth对象。你可以使用Unity的DontDestroyOnLoad方法来确保Auth对象在场景变化时不会被破坏。
以下是如何使用DontDestroyOnLoad的示例:
在初始场景中,添加一个GameObject并附加一个脚本。该脚本将处理Auth对象的初始化。
在脚本中,当脚本被启用时,创建Auth对象的示例:

  1. void OnEnable()
  2. {
  3. if (auth == null)
  4. {
  5. auth = new GameObject("Auth").AddComponent<Auth>();
  6. DontDestroyOnLoad(auth.gameObject);
  7. }
  8. }

字符串
现在,当您过渡到新场景时,Auth对象将不会被销毁,从而允许您正确处理注销过程。
当你准备注销并删除Auth对象时,你可以使用Destroy方法:

  1. auth.SignOut();
  2. Destroy(auth.gameObject);


通过使用这种方法,您可以确保在场景之间转换时正确销毁和管理Auth对象。

展开查看全部

相关问题