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()
,没有成功。
2条答案
按热度按时间zxlwwiss1#
不看代码很难看到确切的问题。
无论如何,我怀疑问题在于这样一个事实,即大多数Auth API调用将随机发生,这意味着在API调用之后声明的代码可能会在API方法完成执行之前运行。
也许您应该使封装方法异步化,然后在加载场景之前完成API调用。
否则,如果在加载场景之前完成此操作并不重要,并且您有性能开销,则可以添加加载场景,然后仅在销毁auth obj后卸载前一个场景。
PS.如果这仍然没有帮助你,那么请添加您的代码的问题,以帮助我们帮助你。
lnvxswe22#
您遇到的问题可能是由于在场景切换之前销毁Auth对象的方式造成的。在某些情况下,这可能会导致意外行为或阻止对象正确销毁。
你可以考虑一种不同的方法,而不是手动处理Auth对象。你可以使用Unity的DontDestroyOnLoad方法来确保Auth对象在场景变化时不会被破坏。
以下是如何使用DontDestroyOnLoad的示例:
在初始场景中,添加一个GameObject并附加一个脚本。该脚本将处理Auth对象的初始化。
在脚本中,当脚本被启用时,创建Auth对象的示例:
字符串
现在,当您过渡到新场景时,Auth对象将不会被销毁,从而允许您正确处理注销过程。
当你准备注销并删除Auth对象时,你可以使用Destroy方法:
型
通过使用这种方法,您可以确保在场景之间转换时正确销毁和管理Auth对象。