android混合开发之unity

先对比 US(unity script)与C#,先说变量问题,如果使用Object来处理var的问题,不可避免频繁的装、拆箱。

US脱胎与.NET,  不可避免C#可能更适合开发

unity跨平台  C#运行时的动态编联

Unity与Android之间相互调用
准确来说,应该是两个VM之间的相互调用:mono/il2cpp 和 dalvik/art,分别运行Unity应用和Android应用,这两个虚拟机运行在同一个进程中。
为了方便起见,后文将前者称为Unity,后者称为Android

Unity调用Java方法
UnityEngine提供了两个类来分别访问Java的实例对象以及类对象:
AndroidJavaObject与AndroidJavaClass
前者表示java.lang.Object或其子类,后者表示java.lang.Class。

Android调用Unity方法
在Android中,有两种方式调用Unity的方法:
通过AndroidJavaProxy进行无感知调用
通过com.Unity3D.player.UnityPlayer.UnitySendMessage方法显式调用
AndroidJavaProxy:AndroidJavaProxy常用于在Unity中实现Java的interface,比如有这么一个Java interface:

如何构建Unity-Android混合项目
本节将介绍如何使用Gradle来构建混合了不同平台项目的工程。
以一个SDK类型的工程为例,我们来看一下工程的内容:
Android SDK
Android Demo (快速调试)
Unity Bridge (封装Android SDK)
Unity Demo (演示并调试Unity Bridge)
目录结构如下:
RootDir (工程根目录)
|
|-- Android (Android相关模块)
| |-- Demo_Android
| |-- SDK_Android
|
|-- Unity (Unity相关模块)
|-- Demo_Unity
|-- Bridge_Unity
其中:
Android的两个模块可以用Android gradle插件进行编译与打包
Bridge_Unity可以用msbuild(windows)或者xbuild(Linux)构建
Demo_Unity需要购买了Unity Pro之后才能自动化构建。
接下来,我们将在各自模块的构建脚本中添加构建任务,分别构建这些模块,最后,在工程的根构建脚本中,创建自动化的构建脚本。

AndroidJavaObject.Call的实现

参考连接 Unity Android Plugin开发指南

猜你喜欢

转载自blog.csdn.net/ation_work/article/details/65449313