C# Firebase实时数据库出现Unity错误
我已经使用Unity一年了,我决定制作一个简单的聊天应用程序。我决定使用谷歌的Firebase来存储我的用户和聊天数据。我计划在android(未来的iOS)上安装该应用程序。我的问题是Unity无法生成Firebase Android文件。我查了一下错误,然后找到了。我采用了推荐的解决方案,创建了实时数据库,并重新安装了json和plist文件。它不起作用。我仍然得到以下错误 从/Users/Family/Desktop生成Firebase Android资源文件google-services.xml/கலைமாறன்/Unity/STEMastery/Assets/。/Assets/Firebase Data/google-services.json失败。 如果您的应用程序中未包含有效的Firebase Android资源,则将无法初始化 我还检查了外部工具。在android下,它说JDK安装了Unity,android SDK工具安装了Unity,android NDK安装了Unity,Gradle安装了Unity。我还没有加载android studio,所以我可以构建到android 我也尝试重新启动unity、visual studio甚至我的计算机,但没有任何帮助 Unity在我的iMac上运行得非常好,可以在Unity编辑器中访问我的实时数据库。但当我在手机上运行时,会弹出两个错误C# Firebase实时数据库出现Unity错误,c#,android,firebase,unity3d,firebase-realtime-database,C#,Android,Firebase,Unity3d,Firebase Realtime Database,我已经使用Unity一年了,我决定制作一个简单的聊天应用程序。我决定使用谷歌的Firebase来存储我的用户和聊天数据。我计划在android(未来的iOS)上安装该应用程序。我的问题是Unity无法生成Firebase Android文件。我查了一下错误,然后找到了。我采用了推荐的解决方案,创建了实时数据库,并重新安装了json和plist文件。它不起作用。我仍然得到以下错误 从/Users/Family/Desktop生成Firebase Android资源文件google-services
DatabaseReference reference = FirebaseDatabase.DefaultInstance.RootReference;
然后我签入另一个脚本,如果它为null。它在我的手机上变为空,但在我的mac电脑上工作正常
我正在使用macOS Mojave(版本10.14.4)。我的unity版本是unity 2020.3.4f1。
我的手机使用安卓10 我想尽一切办法来处理这个错误。我相信通过修复此错误,我的应用程序将在我的手机上正常工作。我已尽力提供所有必要的信息,以帮助您了解我的问题。如果我仍然缺少任何,请询问,我会尽快回复 编辑:
我尝试了一些新东西。我升级到unity 2020.7,但这不起作用。我还尝试使用Unity 2019从头开始创建一个新项目,但我仍然遇到同样的错误。可能是Firebase在我的mac上不起作用,还是Unity中的一个bug已经存在了好几个版本?我真的需要一些帮助来整合Firebase。非常感谢您的帮助。对于使用非ascii用户名的开发人员来说,这是一个众所周知的问题。见和。也许值得打开一期新版本,并强调它现在正在阻止活动开发(请注意,对于未来的读者,第一期已关闭,但第二期在我编写时已打开。如果
690
也已关闭,并且有一个相关的里程碑,这意味着该问题已被修复)
对于潜在的解决方法,最著名的解决方法是使用不带任何扩展非ascii字符的用户名。我知道这可能会产生问题或造成破坏
在进行任何数据库调用之前,可以尝试在编辑器中禁用持久性。这可能会阻止Firebase尝试读取本地数据文件夹,从而避免以下问题:
var database = FirebaseDatabase.DefaultInstance;
if (Application.isEditor) {
database.SetPersistenceEnabled(false);
}
var reference = database.RootReference;
您只需在游戏中执行一次(因此可能在
checkandfixedependenciesasync
之后立即执行),但将其放在数据库访问之前应该会使我的示例代码更安全。您好,感谢您的回复。我以为过几天这个问题就会被忘记。我看看能不能试试。但我有一个问题。什么是非ascii用户名?什么是ascii用户名?我会尽可能地循环StackOverflow,但在GitHub上询问问题是确保问题至少得到解决的一个好方法(你只需在两周内回答任何问题就可以解决问题)。对于ascii,我指的是非扩展ascii字符集(),基本上是拉丁字符(可能是最安全的,没有重音)。由于桌面实现几乎都是C++,这样的问题会出现,其中元素没有转换为UTF-8作为后退。(如果你不熟悉的话,UTF-8是一种非常适合使用8位字符的语言的后备方案。除了strlen是字符串所占用的字节,而不是字符外,它在某种程度上是向后兼容的,不会破坏代码,但可能看起来很奇怪)
var database = FirebaseDatabase.DefaultInstance;
if (Application.isEditor) {
database.SetPersistenceEnabled(false);
}
var reference = database.RootReference;