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

android混合开发之unity

2017-03-23 21:14 483 查看
先对比 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开发指南
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: