Last updated:
0 purchases
situm flutter unity
situm_flutter_unity #
A Flutter plugin for embedding Unity projects in Flutter projects.
Both Android and iOS are supported.
Note
This is a fork of https://github.com/Glartek/flutter-unity.
Usage #
To use this plugin, add situm_flutter_unity as a dependency in your pubspec.yaml file.
Example #
Refer to the example project and the included Unity project.
Testing #
To test this plugin, do the following:
Run git clone https://github.com/situmtech/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 situm_flutter_unity:unity_export_transmogrify.
Open <your_flutter_project>/android/unityExport/build.gradle and check if buildTypes { profile {} } is present. If not, add the following:
buildTypes {
profile {}
}
copied to clipboard
Refer to the example project's unityExport/build.gradle.
Open <your_flutter_project>/android/build.gradle and, under allprojects { repositories {} }, add the following:
flatDir {
dirs "${project(':unityExport').projectDir}/libs"
}
copied to clipboard
Refer to the example project's build.gradle.
Open <your_flutter_project>/android/settings.gradle and add the following:
include ':unityExport'
copied to clipboard
Refer to the example project's settings.gradle.
Open <your_flutter_project>/android/app/src/main/AndroidManifest.xml and add the following:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
copied to clipboard
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
Name
Embed
UnityFramework.framework
Embed & Sign
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.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.