我做了一些研究,现在我正在努力奋斗。 我想使用Firebase数据库函数在Unity上的编辑器脚本中写入数据。
我在运行期间很容易在数据库中读/写(在线doc很棒!),但是当我尝试在编辑时执行它时,它无效。
我有一个非常明确的错误:"请注意,DontDestroyOnLoad只能在播放模式下使用,因此不能成为编辑器脚本的一部分。"
考虑到此错误,似乎无法在此处使用Firebase功能。但有人设法使用它吗?
我现在能想到的唯一解决方案是编写一个python脚本并从统一编辑器中启动它,但是在工业项目中处理大量语言并不是很有说服力(除非你没有选择)。
感谢阅读并抱歉所有的语法错误! 路易斯
答案 0 :(得分:0)
首先,您应该使用具有唯一名称的FirebaseApp的新实例来初始化firebase。我是这样的:
FirebaseApp firebaseApp = FirebaseApp.Create(
FirebaseApp.DefaultInstance.Options,
"FIREBASE_EDITOR");
第二个是与此firebaseApp实例的设置引用(DatabaseReference,StorageReference等),并且仅在FirebaseApp.CheckAndFixDependenciesAsync()之后使用它
总体代码如下:
public static void Initialize(bool isEditor = false)
{
if (isEditor)
{
FirebaseApp firebaseApp = FirebaseApp.Create(
FirebaseApp.DefaultInstance.Options,
"FIREBASE_EDITOR");
firebaseApp.SetEditorDatabaseUrl("https://project.firebaseio.com/");
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
if (task.Result == DependencyStatus.Available)
{
database = FirebaseDatabase.GetInstance(firebaseApp).RootReference;
storage = FirebaseStorage.GetInstance(firebaseApp).RootReference;
auth = FirebaseAuth.GetAuth(firebaseApp);
}
else
{
Debug.LogError(
"Could not resolve all Firebase dependencies: " + task.Result);
}
});
}
else
{
FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://project.firebaseio.com/");
database = FirebaseDatabase.DefaultInstance.RootReference;
storage = FirebaseStorage.DefaultInstance.RootReference;
auth = FirebaseAuth.DefaultInstance;
}
IsInitialized = true;
}
在获取/设置数据之前初始化用于编辑器的SDK:
FirebaseManager.Initialize(true);
然后在CheckAndFixDependenciesAsync回调之后,可以在编辑器脚本中使用Firebase。