unity嵌入Android
2020-09-05
1 unity导出Android工程
- 包名没有要求,尽量使用默认设置
- 勾选
Export Project
2 Android Studio加载unity工程
文件转移
全部转移到对应位置
unityLibrary/libs/unity-classes.jar
(不需要手动添加依赖,因为build.gradle
中已经把libs
中所有*.jar
添加了)
unityLibrary/src/main/assets/
unityLibrary/src/main/java/
(里面的UnityPlayerActivity.java
,注意包名)
unityLibrary/src/main/jniLibs/
launcher/src/main/res/values
(非常重要,否则会运行崩溃)(其中的string.xml
和styles.xml
需要手动合并)
创建UnityPlayerActivity
的子类
public class MainGame extends UnityPlayerActivity { ... }
|
修改mainifest
添加activity
(属性和unity导出工程的一致即可)
<activity android:name=".MainGame" android:theme="@style/UnityThemeSelector" android:screenOrientation="landscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false">
|
修改gradle
非常重要,属性和unity导出工程的尽量一致
android { defaultConfig { ndk { abiFilters 'armeabi-v7a' } } }
- 非必须属性 ```gradle android { compileOptions { ... }
aaptOptions { ... }
lintOptions { ... }
packageOptions { ... }
bundle { ... } }
|
3 Android与unity交互
Andoird调用unity
UnityPlayer.UnitySendMessage
:
UnityPlayer.UnitySendMessage("Canvas/Button", "Update", "1|2")
- 第一个参数为
GameObject
,第二个为GameObject
的Component
脚本上的函数名,第三个为参数,只能传一个字符串