android 集成unity,Android Studio项目集成Unity详细教程

Foreword

上一篇介绍了Xcode项目集成Unity的步骤,本篇介绍AS项目集成Unity,其实在AS上集成相比Xcode简单多了,但也有不少坑需要注意。我们知道Unity可以直接打包apk,也可以导出AS或Eclipse工程,我的应用场景是已经有个Android Studio大项目了,Unity所做的功能属于其一部分,所以选择将Unity导出AS工程,为了方便主项目调用,还将Unity部分打包成aar。

环境:Android Studio 3.0 + Unity 2017

Step

1.将Unity工程导出AS工程

如下图红框处,Build System选择Gradle,Export Project勾选,按图中箭头把包名填好,不能使用Unity默认的,否则导出不了,点击Export导出。

89372a431e86?from=timeline@

导出结果:

89372a431e86?from=timeline@

2.AS导入上一步的工程,选择Import project (Gradle,Eclipse ADT,etc)

89372a431e86?from=timeline@

导入多半是会报错的,一般错误就是gradle版本没选对,按自己的情况选好就行了,比如我的是3.0.0。

89372a431e86?from=timeline@

3.继承UnityPlayer

此时我们来看看这个工程结构,就一个界面UnityPlayerActivity,因为做Unity游戏的话也不需要显示其它原生界面,网上有些教程就是用继承UnityPlayerActivity的方法来显示Unity,然而这样做不够灵活。查看UnityPlayerActivity我们可以发现真正关键的是UnityPlayer所以仿照UnityPlayerActivity直接操作UnityPlayer不就好了么,但是。。。但是这里有个坑,我直接用UnityPlayer正确显示了Unity界面,可是在退出含Unity界面的Activity时,整个应用退出了,难道有Bug导致整个应用崩了?经过查找,发现原来在UnityPlayer源码中:

89372a431e86?from=timeline@

这个kill方法在Activity finish时会被调用,然而它竟然给我把当前应用进程杀死了!没办法,自己写个类 MyUnityPlayer 继承它,并重写父类的kill方法。

package com.unity.demo;

import android.content.Context;

import com.unity3d.player.UnityPlayer;

public class MyUnityPlayer extends UnityPlayer {

public MyUnityPlayer(Context context) {

super(context);

}

@Override

protected void kill() {

//不要杀死当前应用进程

}

}

4.导出aar包

百度“Android Studio导出aar包”,发现还要创建Module,有那么麻烦吗?直接改build.gradle就行了。如下图,

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值