Unity导出包用于AndroidStudio交互使用使用

注意:由于Unity版本问题,旧版Unity导出的包是包含src和lib文件夹,新版(自2019.3后)Unity导出的是包含launcher和unitylibrary文件夹,这里讲解新版导包过程。

一 开发环境

Unity和androidstudio最好使用同一JDK,SDK,NDK

  1. Unity 2019.3.15f1
  2. AndroidStudio 3.5.2
  3. Unity导包安卓libs

二 Unity导出包

  1. 配置好Unity导包环境(JDK,SDK,NDK,Gradle)
    Unity导出包用于AndroidStudio交互使用使用_第1张图片

  2. 修改包名,设置Api需求
    Unity导出包用于AndroidStudio交互使用使用_第2张图片
    设置libs,不然原生对接报错
    下载地址,更新原因:https://www.pianshen.com/article/9770803436/
    https://github.com/topameng/tolua/tree/master/Assets/Plugins/Android/libs
    Unity导出包用于AndroidStudio交互使用使用_第3张图片

  3. 导包
    Unity导出包用于AndroidStudio交互使用使用_第4张图片

  4. 导包结果
    Unity导出包用于AndroidStudio交互使用使用_第5张图片
    Unity导出包用于AndroidStudio交互使用使用_第6张图片

Gradle模板会描述和配置使用Gradle构建Android应用的方法。每个Gradle模板代表一个Gradle项目,Gradle项目可以包括和依赖其它Gradle项目。
将Unity作为库的Gradle模板文件如下:
baseProjectTemplate.gradle:包含所有其它模板和Gradle项目共享的配置,即Android Gradle插件上的代码库和依赖。
launcherTemplate.gradle:包含如何构建Android应用的指令,例如:打包,签名和APK分离等,具体取决于unityLibrary项目,它会输出一个APK文件或App Bundle。
mainTemplate.gradle:包含如何把Unity构建为库的指令,它会输出.aar格式文件,用户可以提供自定义模板来重写Unity模板,包括编辑器设置。
libTemplate.gradle:与之前的工作方式相同。
将Unity作为库会改变Unity Android应用清单文件的使用方式。此前会有一个AndroidManifest.xml文件,用于给Android应用提供图标、行为、权限和其它设置。
使用新系统后,我们有二个清单文件,而不是一个:
LauncherManifest.xml:负责处理图标、应用名称、开始行为及其目的、安装位置、支持的屏幕大小和设置“isGame”。
LibraryManifest.xml:负责声明Unity行为、权限、Unity行为使用的主题、VR模式、VR性能、使行为不可以调整大小、设置最大高宽比、应对配置改动、朝向、启动模式、Android UI硬件加速、使用的功能,例如游戏手柄或图形API和槽口支持。
该清单文件可以通过在Plugins/Android文件夹中提供自定义AndroidManifest.xml文件来重写。

三 AndroidStudio调用包

  1. AndroidStudio新建空项目
    Unity导出包用于AndroidStudio交互使用使用_第7张图片
    Unity导出包用于AndroidStudio交互使用使用_第8张图片
    等待Bulid结束,出错自行解决
    Unity导出包用于AndroidStudio交互使用使用_第9张图片

  2. 导入Unity包
    Unity导出包用于AndroidStudio交互使用使用_第10张图片
    等待bulid结束,出错自行解决
    Unity导出包用于AndroidStudio交互使用使用_第11张图片

  3. 修改settings.gradle
    Unity导出包用于AndroidStudio交互使用使用_第12张图片

include ':unityLibrary'
project(':unityLibrary').projectDir=new File('..\\Demo\\UTA_Demo\\unityLibrary')//里面写的是你unitylibrary的路径//里面写的是你unitylibrary的路径

Unity导出包用于AndroidStudio交互使用使用_第13张图片
4. 修改build.gradle(Module: app)

ndk{ abiFilters 'armeabi-v7a'}

Unity导出包用于AndroidStudio交互使用使用_第14张图片

implementation project(':unityLibrary')
implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar'])//lib路径

Unity导出包用于AndroidStudio交互使用使用_第15张图片
5. 修改build.gradle(你的项目)

flatDir {
    dirs "${project(':unityLibrary').projectDir}/libs"
}

Unity导出包用于AndroidStudio交互使用使用_第16张图片
6. 注销unitylibrary的manifest的入口
Unity导出包用于AndroidStudio交互使用使用_第17张图片
开启多进程,避免从Unity页面返回原生页面杀死App主进程

android:process=":readidcard"

Unity导出包用于AndroidStudio交互使用使用_第18张图片

7.修改strings.xml(app)

Unity导出包用于AndroidStudio交互使用使用_第19张图片

 <string name="game_view_content_description">Game viewstring>

8.Sync
Unity导出包用于AndroidStudio交互使用使用_第20张图片
结果,告一段落,这样就把Unity包导入AndroidStudio中了。
Unity导出包用于AndroidStudio交互使用使用_第21张图片

四 AndroidStudio打开Unity场景

  1. 添加button
    Unity导出包用于AndroidStudio交互使用使用_第22张图片
  2. MainActivity(app)添加按钮事件
    Unity导出包用于AndroidStudio交互使用使用_第23张图片
Button myButton2=(Button)findViewById(R.id.button);
        myButton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(MainActivity.this,UnityPlayerActivity.class);
                startActivity(intent);
            }
        });
  1. 打包
    Unity导出包用于AndroidStudio交互使用使用_第24张图片
  2. 运行
    Unity导出包用于AndroidStudio交互使用使用_第25张图片
    Unity导出包用于AndroidStudio交互使用使用_第26张图片

五 安卓与Unity方法的互调

网上文章一堆,自己查看。

六 注意事项

1.Unity返回闪退
https://www.jianshu.com/p/a68168463b29
2.x64打包问题
https://www.pianshen.com/article/9770803436/

你可能感兴趣的:(Unity,AndroidStudio,unity,AndroidStudio)