java 安卓手机开发示例_安卓集成Unity开发示例(一)

本项目目的是在移动端的 Native App 中以库的形式集成已经写好的 Unity 工程,利用 Unity 游戏引擎便捷的开发手段进行跨平台开发。

环境

Android Studio 3.5.3

Unity version 2019.3.7f1

新建工程操作步骤(安卓)

Step.1

Android Studio 新建项目:

499d32199df287dd7c04c9a282c5c2be.png

Unity 新建项目:

12f8b6854e4891adced0380fb98f3cdb.png

最终工程结构如下:

cce3062dee8dd5939e876a3352144936.png

Step.2

通过 Unity 打开 UnityProject

选择 File -> Build Settings -> Switch Android Platform -> Export Project

e114cce79e934c4b911e8d47ed538ac6.png

7cc167ba32db3d75a1cc4bfb3d231da2.png

这时候选择Export可能会提示JDK路径配置出错,没关系我们到 Preference -> Externl Tools 设置路径

ce16fdba5d4662d336ed714767d70f16.png

c07a86e5d9b6a13ec66ce347ad648fa7.png

可以点击Export了,路径选择可以自由选择,这里建议按照官方来

773b11d44e2752b6264b098dd8227824.png

Step.3

通过 Android Studio 打开 NativeAndroidApp

选择 setting.gradle 文件添加 unityLibrary module include ':unityLibrary'

project(':unityLibrary').projectDir = new File('..\UnityProject\androidBuild\unityLibrary')

选择 build.gradle(Module:app)添加 dependencies dependencies {

implementation project(':unityLibrary')

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

// 自己项目的配置

}

选择 build.gradle(Module:NativeAndroidApp) allprojects {

repositories {

google()

jcenter()

// Add Code

flatDir {

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

}

// End

}

}

选择 NativeAndroidApp 的 strings.xml 添加

NativeAndroidApp

Settings

// Add Code

Game view

// End

解决方案事例

限制

以库形式使用的Unity仅支持全屏渲染,不支持在屏幕的一部分进行渲染;

不支持加载多个Unity运行时实例,Unity可选择附着与当前App的进程,也可以另启一个进程(目前仅限于Android);

开发者需要调整第三方插件,包括原生插件和托管插件,目前我们做VR App就遇到了这种窘妆,库支持堪忧;

生命周期事件的感知(目前最新版本已经添加了部分事件);

包体(粗略计算)

Android 空工程包体 2.2M

Unity IL2CPP ARM64 & V7a 空工程包体 9.87M & 9.12M

Unity Into Android 空工程包体 22.9M:

性能 - 内存

跑在同一进程,资源不能完全释放

跑在不同进程,资源可以完全释放

消息传递(用例后续有时间补齐)

传统数据交换 - 函数传参 - 支持

数据指针交换 - 推拉流数据 - 支持

共享纹理 - 相机采集数据 - 支持

C++ 直接交互 - 底层库 - 支持

建议参考

安卓 & U3D 交互

官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值