Unity Flutter
Flutter is a mobile app SDK to help developers and designers build modern mobile apps for iOS and Android. Embeddable unity game engine view for Flutter. Now you can make awesome gamified features of your app in Unity and get it rendered in a Flutter app both in fullscreen and embeddable mode.
Unity Uiwidgets
A Flutter plugin for embedding Unity projects in Flutter projects.
Both Android and iOS are supported.
Usage #
To use this plugin, add flutter_unity
as a dependency in your pubspec.yaml file.
Example #

Refer to the example project and the included Unity project.
Unity Flutter
Testing #

To test this plugin, do the following:
- Run
git clone https://github.com/Glartek/flutter-unity.git
to create a local copy of flutter-unity. - Open flutter-unity in Android Studio.
Android
- Connect your Android device and run the project.
iOS
- Configure the example project and the included Unity project.
- Connect your iOS device and run the project.
Configuring your Unity project #
Android
- Go to File > Build Settings.. to open the Build Settings window.
- Select Android and click Switch Platform.
- Click Add Open Scenes.
- Check Export Project.
- Click Player Settings.. to open the Player Settings window.
- In the Player Settings window, configure the following:
Setting | Value |
---|---|
Resolution and Presentation > Start in fullscreen mode | No |
Other Settings > Rendering > Graphics APIs | OpenGLES3 |
Other Settings > Configuration > Scripting Backend | IL2CPP |
Other Settings > Configuration > Target Architectures | ARMv7, ARM64 |
- Close the Player Settings window.
- Click Export and save as
unityExport
.
iOS
- Go to File > Build Settings.. to open the Build Settings window.
- Select iOS and click Switch Platform.
- Click Add Open Scenes.
- Click Build and save as
UnityProject
.
Configuring your Flutter project #
Android
- Copy the
unityExport
folder to<your_flutter_project>/android/unityExport
. - Run
flutter pub run flutter_unity:unity_export_transmogrify
. - Open
<your_flutter_project>/android/unityExport/build.gradle
and check ifbuildTypes { profile {} }
is present. If not, add the following:
Refer to the example project's unityExport/build.gradle.
- Open
<your_flutter_project>/android/build.gradle
and, underallprojects { repositories {} }
, add the following:
Refer to the example project's build.gradle.
- Open
<your_flutter_project>/android/settings.gradle
and add the following:
Refer to the example project's settings.gradle.
- Open
<your_flutter_project>/android/app/src/main/AndroidManifest.xml
and add the following:
Adobe flash for firefox mac os. Refer to the example project's AndroidManifest.xml.
Steps 1, 2 and 3 must be repeated for every new build of the Unity project.
iOS
- Copy the
UnityProject
folder to<your_flutter_project>/ios/UnityProject
and open<your_flutter_project>/ios/Runner.xcworkspace
in Xcode. - Go to File > Add Files to 'Runner'.., and add
<your_flutter_project>/ios/UnityProject/Unity-iPhone.xcodeproj
. - Select
Unity-iPhone/Data
, and, in the Inspectors pane, set the Target Membership to UnityFramework. - Select
Unity-iPhone
, select PROJECT : Unity-iPhone, and, in the Build Settings tab, configure the following:
Setting | Value |
---|---|
Build Options > Enable Bitcode | No |
Linking > Other Linker Flags | -Wl,-U,_FlutterUnityPluginOnMessage |
- Select
Runner
, select TARGETS : Runner, and, in the General tab, configure the following:
Setting | Value | ||||
---|---|---|---|---|---|
Frameworks, Libraries, and Embedded Content |
|
- Select
Runner/Runner/Info.plist
, and configure the following:
Key | Type | Value |
---|---|---|
io.flutter.embedded_views_preview | Boolean | YES |
Steps 1, 3 and 4 must be repeated for every new build of the Unity project.
Exchanging messages between Flutter and Unity #
Flutter
To send a message, define the onCreated
callback in your UnityView
widget, and use the send
method from the received controller
.
To receive a message, define the onMessage
callback in your UnityView
widget.
Unity
To send and receive messages, include FlutterUnityPlugin.cs in your project, and use the Messages.Send
and Messages.Receive
methods.
A Message
object has the following members:

- id (
int
)
A non-negative number representing the source view when receiving a message, and the destination view when sending a message. When sending a message, it can also be set to a negative number, indicating that the message is intended for any existing view.
- data (
string
)
The actual message.
Refer to the included Unity project's Rotate.cs.
A collection of resources used by the application.
Asset bundles contain resources, such as images and strings, that can beused by an application. Access to these resources is asynchronous so thatthey can be transparently loaded over a network (e.g., from aNetworkAssetBundle) or from the local file system without blocking theapplication's user interface.
Vue for mac torrent. Applications have a rootBundle, which contains the resources that werepackaged with the application when it was built. To add resources to therootBundle for your application, add them to the assets
subsection ofthe flutter
section of your application's pubspec.yaml
manifest.
For example:
Rather than accessing the rootBundle global static directly, considerobtaining the AssetBundle for the current BuildContext usingDefaultAssetBundle.of. This layer of indirection lets ancestor widgetssubstitute a different AssetBundle (e.g., for testing or localization) atruntime rather than directly replying upon the rootBundle created at buildtime. For convenience, the WidgetsApp or MaterialApp widget at the topof the widget hierarchy configures the DefaultAssetBundle to be therootBundle.
See also:
