【Unity】Firebaseを使用すると2回目のPlayでUnity Editorがcrashする

はじめに

こんにちは、SHOJIです。

本記事では、UnityでFirebaseを使用してデバッグ(Play)したときにUnity Editorがcrashする場合の対処方法を記載します。

タイトルがルー大柴みたいになっていますが、同じ現象に悩む方に見つけてもらえるようにした結果なので見逃してください笑

初回起動はクラッシュしないのに2回目以降はクラッシュする

という状況であれば、十中八九この設定で直ります。

Opening two unity editor with same firebase project causing unity crash · Issue #928 · firebase/quickstart-unity · GitHub

#if UNITY_EDITOR
  Firebase.FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(false);
#endif

使用しているのがFirestoreの場合はこうです。

#if UNITY_EDITOR
  FirebaseFirestore.DefaultInstance.Settings.PersistenceEnabled = false;
#endif

なぜクラッシュするのか

原因について言及しているコメントがあります。

以下はDeepL翻訳した文章です。

Windowsでは、永続化データは/<パッケージ名>/<データベース名>に格納されます。このコードを見てください。

問題は、2つのUnityエディタインスタンスがある場合、それらが同じ場所に書き込もうとし、アサートが発生することです。

これはデスクトップでは確かに固有の問題ですが、AndroidiOSでは一度に1つのインスタンスしかないため、そうではありません。

複数インスタンスで同じ場所に書き込もうとして落ちてるとのこと。

なるほど、実機で発生しないのはインスタンスが常に一つだからなんですね。

初回だけ通るという点でキャッシュや一時領域が怪しくはあったのであまり意外性はないかなと思います。

おわりに

この問題は半年前には起きていたのですが、2回目以降のときだけ起きることに気づいておらず、解決方法にたどり着けずにいました。なので今回解決できてようやく快適に開発ができる……と安堵しています。

この記事が同じ事象で悩む方の助けになることを願っています。