|
| 1 | +# Unity Firebase Remote Config For Unity Editor |
| 2 | + |
| 3 | +Этот небольшой набор скриптов позволяет в **Editor Mode** (без запуска Play Mode) принудительно обновлять значения из **Firebase Remote Config**, игнорируя кеш и не дожидаясь очередного перезапуска Unity или домейн‐релода. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## Предыстория |
| 8 | + |
| 9 | +В старых (да и некоторых новых) версиях Firebase Remote Config для Unity есть проблема: при повторном запросе **вне** Play Mode SDK часто отдаёт устаревшие данные из кеша, пока не произойдёт перезагрузка скриптового домена (например, при запуске Play Mode или перезагрузке Unity). В результате любые изменения, опубликованные в Firebase Console, не сразу подтягиваются в редакторе. |
| 10 | + |
| 11 | +**Решение** – «насильно» переинициализировать Firebase и очищать внутренние структуры, связанные с Remote Config, используя методы, недоступные напрямую (например, `FirebaseApp.DisposeAllApps()`), чтобы получить новую «сессию» Firebase и запросить актуальные данные. |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## Как установить |
| 16 | + |
| 17 | +1. Скопируйте три скрипта (`FirebaseAppHelper.cs`, `FirebaseRemoteConfigHelper.cs`, `RemoteConfigEditor.cs`) в свой Unity‐проект, желательно в папку **Editor**. |
| 18 | +2. Убедитесь, что в проекте уже установлен и подключён **Firebase Remote Config SDK**. |
| 19 | +3. Откройте в Unity меню **RimuruDev Tools → Firebase RemoteConfig Editor**. |
| 20 | + |
| 21 | +--- |
| 22 | + |
| 23 | +## Как пользоваться |
| 24 | + |
| 25 | +1. **Print RemoteConfig Cache** |
| 26 | + Выводит в консоль текущее содержимое внутреннего словаря, где `FirebaseRemoteConfig` хранит свои экземпляры. |
| 27 | + |
| 28 | +2. **Restart Firebase and Fetch Remote Config** |
| 29 | + - Очищает кеш Remote Config. |
| 30 | + - Через рефлексию вызывает `FirebaseApp.DisposeAllApps()`, «раз‐инициализируя» Firebase. |
| 31 | + - Повторно инициализирует Firebase, выставляет `MinimumFetchInterval` в ноль (чтобы отключить кеш). |
| 32 | + - Выполняет `FetchAsync` и `ActivateAsync`. |
| 33 | + - Выводит полученные актуальные данные в окно (и в консоль). |
| 34 | + |
| 35 | +Таким образом, вы можете многократно изменять параметры Remote Config в консоли, публиковать их, а затем нажимать «Restart Firebase and Fetch Remote Config» — и получать новые значения **сразу**, без запуска Play Mode и без перезапуска Unity. |
| 36 | + |
| 37 | +--- |
| 38 | + |
| 39 | +## Важные детали |
| 40 | + |
| 41 | +- Код основан на рефлексии и доступе к внутренним методам Firebase SDK, то есть **официально не поддерживается**. Однако для тестирования и отладки этого вполне достаточно. |
| 42 | +- Тестировалось на: |
| 43 | + - **Firebase Remote Config** версии `12.2.1` |
| 44 | + - **Unity 2022.3.35f1** |
| 45 | +- Успешно применялось в реальном проекте с большой пользовательской базой. |
| 46 | +- В релизных сборках (на девайсах/платформах) кеш работает штатно; проблема возникает только при «горячем» тестировании в редакторе. |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | +## Лицензия |
| 51 | + |
| 52 | +Лицензируется под [MIT License](LICENSE). |
0 commit comments