Android集成Unity到App中

  • 参考(android与unity交互): http://blog.csdn.net/crazy1235/article/details/46733221

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

Android集成Unity到App中_第1张图片

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调用就不说了)。

集成中遇到的问题:

  1. Error Unable to initialize the Unity Engine.
    检查是否正确将unity提供文件(lib、asset下)全部引入项目里。
  2. 编译时 java.lang.OutOfMemoryError: Java heap space
    增加或修改 项目下gralde.properties : org.gradle.jvmargs=-Xmx4096m 4096不行就增大。
  3. unity调用android方法退出游戏,结果整个应用都退出了
    在注册Activity中增加 process属性 eg: android:process=”:UnityActivity” 使其不在一个进程中。
  4. 运行时可能会报找不到你提供的类(与unity方约定好的调用类路径在这之前是打了个jar包给unity方的,jar包其实是unity提供的三个类和自己新建的UnityActivity 继承了UnityPlayerActivity,在里面写了unity调用app端的方法,用于测试。)
    记得一定要将UnityActivity放在你给unity路径下,否则unity找不到类。

PS:最后还是将unity单独作为一个model放到项目中,方便以后维护、更改。

你可能感兴趣的:(unity)