Flutter — это король интерфейсов, навигации и бизнес-логики. Но когда дело доходит до 3D, сложной физики или AR, он пасует. Зато здесь на сцену выходит Unity.
Многие команды мечтают объединить эти два мира: красивую Flutter-оболочку и мощную Unity-сцену внутри. Раньше это было болью: ручной экспорт библиотек, бесконечная правка
settings.gradle
, написание
method channels
и отдельная
UnityPlayerActivity
. Хрупко, долго и страшно обновлять.
Но времена меняются! Появился Game Framework — современный инструмент (преемник
flutter_unity_widget
), который автоматизирует весь этот процесс. Это CLI и SDK, которые превращают Unity-сцену в обычный Flutter-виджет с типобезопасным обменом сообщениями.
Как это работает?
1️⃣ Устанавливаем CLI через Homebrew:
brew tap xraph/tap
brew install game-cli
2️⃣ Добавляем пакеты в
pubspec.yaml
:
gameframework: ^0.0.3
gameframework_unity: ^0.0.4
3️⃣ Инициализируем плагин в
main()
:
UnityEnginePlugin.initialize();
4️⃣ Экспортируем Unity-проект одной командой:
game export unity --platform android,ios
5️⃣ Синхронизируем с Flutter-проектом:
game sync unity --platform android,ios
Эта команда сама подключает Gradle-модуль для Android и iOS-framework. Никакого ручного редактирования конфигов!
Unity как виджет
После синхронизации ваша 3D-сцена становится обычным виджетом:
GameWidget(
engineType: GameEngineType.unity,
onEngineCreated: (controller) => _controller = controller,
onMessage: _onMessage,
config: const GameEngineConfig(
fullscreen: false,
runImmediately: true,
unloadOnDispose: true,
),
)
Обмен сообщениями
Flutter может отправлять команды в Unity:
await _controller?.sendMessage(GameManager, SetSpeed, 2.5);
await _controller?.sendJsonMessage(GameManager, UpdateScore, {
score: 100,
stars: 3,
});
А Unity может отправлять данные обратно через небольшой мост на C#. В Flutter эти сообщения приходят в обработчик
onMessage
.
Интеграция перестала быть рутиной. Проект бесплатный и с открытым исходным кодом. Если вы хотите добавить 3D или AR в свое приложение — обязательно посмотрите на этот инструмент! 🚀
Полную новость читайте здесь.
FlutterPulse — канал о мире Flutter!
#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter #unity #gamedev