您的位置:首页 > 移动开发 > Unity3D

Android集成Unity到App中

2017-04-19 17:04 417 查看
参考(android与unity交互): http://blog.csdn.net/crazy1235/article/details/46733221

项目中需要将unity作为app一部分,这里主要记录一下unity集成到android项目中(交互上面链接写得很清楚了)。



unity提供的android工程是Eclipse结构的,我是先在Eclipse中导入工程运行确认没问题然后将其导入我的项目中。

可以选择将其作为一个model依赖到项目中或者copy到主model下。方便更快测试,我是直接copy的。

将assets、lib、res 、src下java类文件copy到对应目录下;

将AndroidManifest.xml中的权限申请copy过去,将注册的activity copy过去,删除里面的intent-filter部分。

proguard-unity.txt里面是混淆,将其copy到项目中proguard.cfg文件里。

在需要跳转 地方增加点击跳转事件就可以了。src目录下主要是三个Acitivity :

- UnityPlayerActivity

- UnityPlayerProxyActivity -启动UnityPlayerActivity

- UnityPlayerNativeActivity -extends UnityPlayerActivity

所以新建一个activity[UnityActivity]继承UnityPlayerActivity,在里面写跟unity约定好的一些互相调用的方法,在AndroidManefist中 UnityPlayerActivity替换成其子类,不要忘记更改跳转intent,就可以了。

Android调用unity方法:

UnityPlayer.UnitySendMessage(“gameScene”, “function”, “params”);

unity调用Android方法:

按照约定规则(修饰符、参数类型,返回类型)写就好了。(unity调用就不说了)。

集成中遇到的问题:

Error Unable to initialize the Unity Engine.

检查是否正确将unity提供文件(lib、asset下)全部引入项目里。

编译时 java.lang.OutOfMemoryError: Java heap space

增加或修改 项目下gralde.properties : org.gradle.jvmargs=-Xmx4096m 4096不行就增大。

unity调用android方法退出游戏,结果整个应用都退出了

在注册Activity中增加 process属性 eg: android:process=”:UnityActivity” 使其不在一个进程中。

运行时可能会报找不到你提供的类(与unity方约定好的调用类路径在这之前是打了个jar包给unity方的,jar包其实是unity提供的三个类和自己新建的UnityActivity 继承了UnityPlayerActivity,在里面写了unity调用app端的方法,用于测试。)

记得一定要将UnityActivity放在你给unity路径下,否则unity找不到类。

PS:最后还是将unity单独作为一个model放到项目中,方便以后维护、更改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity unity集成