Unity3D项目融合到Android项目中

需求是这样的,有一个Android项目,里面要添加一个unity3D做的模块,然后把它们融合到一个项目中,操蛋的是两个独立的项目,还是unity3D融合到Android项目中,如果是在项目设计架构之前选择一个为基点做二次开发,那就没这么操蛋了,但是然并卵!

Unity3D是一款国外的3D游戏引擎,最近几年在国内火了起来,算是在游戏引擎里面比较新颖的技术吧,写好的项目可

以直接导出Android和Ios版本,相当给力,可以直接在手机上跑了。说到这里,已经有一个Android项目出来了,且放在

这,下面贴上Unity3D导出的Android版本的结构目录。

Unity3D项目融合到Android项目中_第1张图片

可以看的出它就是一个完整的Android项目,这样的话下面我们就能找出第一个融合的方法,

一.捆绑安装

把unity3D虽然主程序静默安装到用户手机里面,然后用广播打开unity3D程序并通信,很显然这样做并不好,但是当时

我就只会这个,结果是最后被吊打了。当然,这里我们不谈论这个方法,主要说明的是下面个方法,真正的融合到一

起,就一个安装程序,一个mainActivity.

二.代码合并

把unity3D导出的android项目代码合并到主项目里即可。下面列出合并步骤和一些注意事项。

  1.在unity3D编辑器的安装目录中找到unity-classes.jar包引入到主程序libs中。这个unity for android的支持包。

2. 整合两个AndroidManifest.xml文件

     找到unity3D里AndroidManifest.xml文件中的activity节点复制到主项目的AndroidManifest.xml文件中,急着把过滤器注释掉,也就是 里面的内容。

3.把unity3D Android项目中的assets目录下的bin文件复制到主项目assets目录下

Unity3D项目融合到Android项目中_第2张图片

 4.最后把unity项目中的activity复制到主项目中

Unity3D项目融合到Android项目中_第3张图片

下面就简单的对这三个类说明一下。

UnityPlayerProxyActivity这个类主要就是在程序运行时获取设备系统的版本,然后根据系统版本自行判断启动UnityPlayerActivity还是UnityPlayerNativeActivity。

UnityPlayerActivity是UnityPlayerNativeActivity的子类,根据unity官方说明UnityPlayerNativeActivity加载的比较快,但是需要android2.3系统版本以上支持,

因为引用了UnityPlayerNativeActivity继承了NativeActivity类,而这个类是从android系统中引入的,在2.3版本之前没有此类。

那么现在就知道了,UnityPlayerNativeActivity类其实就unity3D加载的入口,一切模型动画渲染都是从这里开始加载的,那么也就可以把UnityPlayerNativeActivity

当作一个普通的android中的activity使用,调用、复用、销毁,它也具备activity的生命周期,因为往深去看,其实就是一个activity。

完成以上步骤,就完成了所有的整合,以后若unity3D模块更新迭代后,直接把assets下的bin复制替换掉主项目中的即可。


有时间后面再分享些整合后在模型(UnityPlayerNativeActivity类)中修改界面和一些交互注意事项方面的东西与大家探讨一下。


你可能感兴趣的:(交互,android,unity3D)