尝试将Unity项目接入Android将Unity项目导出把UnityLibrary放到Android项目的APP目录的根目录中导入项目:修改build.gradle.kts 导入Unity模块implementation(project(:unityLibrary))接入方案直接在MainActivity中使用Intent跳转到UnityPlayerActivityval intent Intent(context, SettingsActivity::class.java) context.startActivity(intent)使用UnityPlayer展示Unity画面设置一个Fragment来存放Unity画面自定义一个Activity在布局文件添加Fragment位置使用FragmentManager添加UnityFragment画面添加到Activity中这样可以在Activity的画面中方便地添加自定义UI注意在打开Unity画面后再退出会出现回不到主页面的情况如果 Unity 和主界面在同一进程Unity 退出时杀进程主界面也会一起被杀可以在 Manifest文件里面 把 显示Unity的自定义Activity 设置成单开进程activity android:name.unity.MyUnityActivity android:process:unity android:exportedfalse /这样在退出Unity后主程序的进程不会被杀死2. 在导入UnityLibrary后安装APP会发现有两个图标其中一个点击会直接打开Unity的画面解决方案修改unityLibrary/src/main/AndroidManifest.xmlactivity android:namecom.unity3d.player.UnityPlayerActivity android:themestyle/UnityThemeSelector android:screenOrientationfullUser android:launchModesingleTask android:configChangesmcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density android:resizeableActivityfalse android:hardwareAcceleratedfalse android:exportedtrue !-- intent-filter-- !-- category android:nameandroid.intent.category.LAUNCHER /-- !-- action android:nameandroid.intent.action.MAIN /-- !-- /intent-filter-- meta-data android:nameunityplayer.UnityActivity android:valuetrue / meta-data android:namenotch_support android:valuetrue / /activity注释掉Manifest注册的UnityPlayerActivity中intent-filter里面的内容category android:nameandroid.intent.category.LAUNCHER /会让Activity在桌面Launcher上单独显示一个应用图标在使用UnityLibrary里面的UnityPlayer的时候可能会发现怎么我导入了unityLibrary但是import com.unity3d.player.UnityPlayer还是会说找不到明明unityLibrary/libs/unity-classes.jar这个jar包里面就有UnityPlayer。修改unityLibrary/build.gradledependencies { // implementation fileTree(dir: libs, include: [*.jar]) api fileTree(dir: libs, include: [*.jar]) }替换implementation为apiimplementation 不会把 unity-classes.jar 暴露给依赖本模块的app导致app里import com.unity3d.player.UnityPlayer报Unresolved reference替换以后就能正常编译了如果AndroidStudio还是爆红可以file - invalidate caches - invalidate and restart 重置一下缓存就不会报错了Android与Unity之间通信Android - Unity通过UnityPlayer.UnitySendMessage(GameObject的名字,方法名,String类型传参)Android可以调用Unity里面的方法注意第一个参数是GameObject的名字不是类名Unity - AndroidUnity可以调用 来发消息给Android在Unity使用AndroidJavaClass通过包名、方法名、参数其中参数数量要与方法参数数量对应using(AndroidJavaClassbridgenewAndroidJavaClass(com.test.myapp.unity.bridge.MyUnityBridge)){bridge.CallStatic(onGameFinished,String类型的参数);}Android这边设置一个单列来让Unity调用objectMyUnityBridge{funsendToNative(data:String){//通过广播传递消息}JvmStaticfunonGameFinished(result:String){println(Unity 通知:$result)sendToNative(result)}}在接收到消息后可以通过广播发在Android内部交流要注意如果Unity和Android的接收端是同一进程主程序是另一个进程可以使用广播、Intent来传递消息或者将数据保存在MMKV。思考现在只是简单的添加了unityLibrary模块后续可以尝试直接使用arr包