Unity-Technologies / uaal-example

Other
750 stars 238 forks source link

Unity as a Library integration example to iOS and Android

In some scenario developers using native platform technologies (like Android/Java & iOS/Objective C) want to include in their apps/games features powered by Unity for 3D/2D Real Time Rendering, AR experience, interaction with 3D models, 2D mini games and more.

Starting with Unity 2019.3.0a2, Unity introduced a new feature to use Unity as a library in native apps by integrating the Unity runtime components and content in a native platform project. The Unity Runtime Library exposes controls to manage when and how to load/activate/unload within the native application.

Warning

Using Unity as a Library requires you have experience with developing for native platform technologies such as Java/Android, Objective C/iOS, or Windows Win32/UWP. You need to be familiar with the structure of the project, language features and specific platform configuration options (like user permissions for example).

Requirements

Limitations

While we tested many scenarios for Unity as a library hosted by a native app, Unity does not control anymore the lifecycle of the runtime, so we cannot guarantee it'll work in all possible use cases. For example:

How it works

The build process overall is still the same, Unity creates the iOS Xcode and Android Gradle projects and generated iOS Xcode and Android Gradle projects have the following structure: A library part (iOS framework and Android Archive (AAR) file) that includes all source & plugins A thin launcher part that includes app representation data and runs library

Step by step explanations on how to include the iOS / Android library part into your native application when needed.