flutter_unity

Last updated:

0 purchases

flutter_unity Image
flutter_unity Images
Add to Cart

Description:

flutter unity

flutter_unity #
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.
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 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.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.