目前大家看到大多数Unity与Android通信的教程,可能使用的不是最新版的Unity,或者是用Eclipse配置Android,为此本文就详细和大家介绍下android studio创建的Android工程在unity实现相互通信。

需要安装的软件:Android Studio、Unity

一、开启Android的一个工程,点击File下新建如下图所示New Module。

安卓版和unity版区别 unity和安卓通信_android

二、选择Android Library。

安卓版和unity版区别 unity和安卓通信_unity android 带两个参数_02

三、为Library命名,在这里我命名为BmobPay。

安卓版和unity版区别 unity和安卓通信_右键_03

四、选中如下图的两个。xml文件,右键选择点击delete,删除。

安卓版和unity版区别 unity和安卓通信_unity android 带两个参数_04

五、安装unity,在unity的安装目录下,找到以下图文件路径,复制classes.jar文件

安卓版和unity版区别 unity和安卓通信_安卓版和unity版区别_05

六、将上个步骤的classes.jar文件粘贴到Project视图下的如下图libs文件下,点击右键选择add as library。

安卓版和unity版区别 unity和安卓通信_unity android 带两个参数_06

七、打开MainActivity.java文件,按如下图修改删除

package com.liujunliang.bmobpay;
import .AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
public class MainActivity extends UnityPlayerActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
}
//unity将会调用addNumber函数
public int addNumber(int a,int b)
{
//与unity通信,调用untiy的方法
//参数一:挂件游戏对象
//参数二:挂件函数方法名
//参数三:函数方法参数
UnityPlayer.UnitySendMessage("Main Camera","PrintText","http://www.liujunliang.com.cn");
return a+b;
}
}

安卓版和unity版区别 unity和安卓通信_Android_07

八、修改该文件的父类,继承于UnityPlayerActivity。

安卓版和unity版区别 unity和安卓通信_右键_08

九、之后运行该模块,选择Build,按如下图选择运行。

安卓版和unity版区别 unity和安卓通信_右键_09

十、运行完成之后,将生成debug文件,按下图路径找到bundles,右键选择点击Show in Explorer。

安卓版和unity版区别 unity和安卓通信_安卓版和unity版区别_10

十一、将弹出文件管理,进入该目录下的libs文件夹。

安卓版和unity版区别 unity和安卓通信_unity android 带两个参数_11

十二、该目录的classes.jar是之前我们在unity里加入的jar包文件,右键选择删除删除。

安卓版和unity版区别 unity和安卓通信_android_12

十三、将如下图的classes.jar文件添加到libs文件夹下,这里的classes.jar文件时运行后android studio的jar包文件。

安卓版和unity版区别 unity和安卓通信_Android_13

十四、这是开启unity创建一个工程,在工程的如下图目录下创建如下图所示的目录。

安卓版和unity版区别 unity和安卓通信_安卓版和unity版区别_14

十五、按如下图选择三个文件拖动到Android目录下。

安卓版和unity版区别 unity和安卓通信_unity android 带两个参数_15

十六、创建一个C#脚本组件,这里我命名为UnityCallAndroid,并将这个组件挂在到Main Camera游戏对象中。

UnityCallAndroid.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class UnityCallAndroid : MonoBehaviour {
public Text text;
// Use this for initialization
void Start ()
{
}
public void OnClicked()
{
#region 调用安卓工程函数
AndroidJavaClass AJC = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
AndroidJavaObject AJO = AJC.GetStatic ("currentActivity");
int result = AJO.Call ("addNumber",10,30);
text.text += result.ToString ();
#endregion
}
// Update is called once per frame
void Update ()
{
}
#region Android工程调用unity方法
public void PrintText(string str)
{
text.text += str;
}
#endregion
}

安卓版和unity版区别 unity和安卓通信_Android_16

十七、选择unity的File中的Build Settings,弹出如下图对话框。

安卓版和unity版区别 unity和安卓通信_安卓版和unity版区别_17

十八、找到如下图的Bundle Identifier 对内容进行修改。

安卓版和unity版区别 unity和安卓通信_Android_18

十九、回到android工程如下图的。xml文件,复制。

安卓版和unity版区别 unity和安卓通信_android_19

二十、粘贴。

安卓版和unity版区别 unity和安卓通信_unity android 带两个参数_20

二十一、使用usb线连接android手机,如果点击Build And Run,Build完成后将自动在安卓手机开启运行。

安卓版和unity版区别 unity和安卓通信_android_21

倘若选择Build可以不用连接安卓手机,自行手动发送到手机进行检测。

二十二、在这里使用360手机管家了演示结果,开启项目。

安卓版和unity版区别 unity和安卓通信_android_22

二十三、在这里就大功告成了,点击按钮,将显示调用android方法结果以及android调用unity方法结果。

安卓版和unity版区别 unity和安卓通信_右键_23