Flutter+Unity

こんにちはEveryDaySoft代表の永田です。

FlutterでUnityの作成モチベーションはゲーム作成、通常アプリでもゲーム体験を実装したいと思っています。

FlutterでUnityのMobile起動のコツを共有します。

必要なツール Xcode、AndroidStudio、Unity Hub

実機のみ動作

https://twitter.com/dbank0208/status/1592455484438892544?s=20&t=RQVRy9bJgHVo1jSYGP_R1A

基本的にはリンク先の解説通り実施するとできるのですが、

少しコツがあります。

https://github.com/juicycleff/flutter-unity-view-widget

ExportするときのUnityプログラムの階層

画像はオリジナルの作成物ですが上記のpackageを使用すると

UnityからFlutter階層にExportできます。UnityLibraryと書かれたものです。

この時に Unityの作成プロジェクト階層が重要になります。

この順序を守ってください。

unity_example/unity/3DUnity_Example<=ここからExportしてます。

自作でUnityを作成する場合はExportさせるUnityのPackage をUnity内にインストールします。

Flutterと書かれている項目はCustomPackageをインストールすると表示されます

このような名称がありますのでダウンロードしてください

https://github.com/juicycleff/flutter-unity-view-widget/tree/master/unitypackages

fuw-2022.1.7f1.unitypackage

階層はこのような形にしました。

Unity FrameWorkの導入は

+ボタンで先ほどの画像にあるExportされたUnityLibraryフォルダーを

丸ごと追加してください。

 

Xcodeで実機で動かす際はDebug excutableのチェックマーク外してください。

 

UnityからFlutterに受信する場合はUnityとAndroidStudioが必要です。

Flutter側の

onUnityMessageメソッドはサンプルにもあるので割愛します。

Flutterに送信させるにはC#の実装が必要です。

using FlutterUnityIntegration;を実装します。

UnityMessageManager.Instance.SendMessageToFlutter(String型)でFlutter側に送信します。Flutter側のonUnityMessage側が発行します。

https://twitter.com/dbank0208/status/1588980107586437120?s=20&t=RQVRy9bJgHVo1jSYGP_R1A

Flutter側からUnityに送信もできます。

Flutter側のPlayerはC#のクラス SSSSSはメッド名

C#側も実装が必要です。これは僕の考えた受信コードです。

これはUnityがレシーバーで受信してくださいのような内容があったので、ググってC#に習い実装しました。Dictionary型は単にpostJsonMessageの型がそうだったので、適当に合わせました。

SceneMager~~~はC#の画面遷移のコードです。Unityのエディターでも設定が必要ですが、割愛します。

基本的な対応は作者のGithub上であります。

以上、貴重なお時間お読みくださいまして、誠にありがとうございます。