1.首先说下Unity生成的AS项目的大概结构 如下所示看看有没有不全的
如果文件不全 Unity重新生成项目
2.文件齐全 以导入Moudle的方式把Unity生成的项目当成一个单独项目导入Studio 正常运行就下一步 不能正常运行 重新打包
3.开始配置项目
①.把unity3d的src-main-libs里面的unity-classes.jar拷入项目的libs目录下 然后 add as library
②.把unity3d的src-main-assets和jniLibs文件夹直接拷入到项目的src-main下,和java同一级别
③.把unity3d的src-main-res的资源文件直接拷入项目的资源里,这里注意不要覆盖文件,出现冲突就打开文件把代码粘进去
④.在项目的包名路径下创建一个包名叫unity的package,把unity3d的src-main-java-包名最里面的三个java文件粘进去,注意修改包名
⑤.配置gradle
配置到android-defaultConfig的大括号里面
ndk { abiFilters "armeabi", "armeabi-v7a", "x86", "mips" }配置到android的大括号里面
packagingOptions { exclude "jniLibs/armeabi-v7a/libmain.so" exclude "jniLibs/armeabi-v7a/libmono.so" exclude "jniLibs/armeabi-v7a/libunity.so" exclude "jniLibs/x86/libmain.so" exclude "jniLibs/x86/libmono.so" exclude "jniLibs/x86/libunity.so" }(这里要注意 名字可能不一样项目也不同 记住指定)
⑥.配置混淆原则 把下面这个粘到你的proguard-rules.pro文件里面
#Unuty3D -dontwarn bitter.jnibridge.** -keep class bitter.jnibridge.** { *; } -dontwarn com.unity3d.player.** -keep class com.unity3d.player.** { *; } -dontwarn com.fmod.** -keep class com.fmod.** { *; } -keep class 你的包名.unity.** { *; }⑦.在unity的路径下新建一个empty activity继承UnityPlayerActivity,这里不推荐使用Kotlin,可能会出现问题,一般命名为UnityActivity ,注册在AndoidManifest.xml里面 然后打开unity3d的src-main-AndroidManifest.xml 把里面的
android:screenOrientation
android:launchMode
android:configChanges
属性复制到主项目的UnityActivity里;这里注意下,也可以把unity3d的src-main-AndroidManifest.xml里面的activity和meta一并复制到项目里面去,但是需要改name,并且去掉intent-filter。
⑧.给UnityActivity对应的activity_unity.xml加个id
android:id="@+id/activity_unity"然后
this.rlMain = findViewById(R.id.activity_unity); rlMain.addView(mUnityPlayer); mUnityPlayer.requestFocus();
unity已经完全导进来了 这会可以测试运行下 如果能顺利进入 代表配置成功