Unity 调用 Android
2019-07-30 本文已影响0人
周末的游戏之旅
最近接了一个小项目,大概是需要在Android里做人脸识别,然后将数据回传给Unity做计算。
看了许多网上的文章,大多都是在Android Studio中导出jar包,放到unity里,然后在Unity里调用。我测试后发现抛异常,找不到jar包中的类。可能是我的方式有问题(如果有大佬知道怎么解决,请教我一下😂)
正文
步骤大致分为三步
- 在Unity中编辑脚本
- 在Unity导出 Android Studio 工程
- 在 Android Studio 中再次编辑
一 在Unity中编辑
- 新建一个Unity工程,在相机上挂一个脚本 Test ,脚本内容如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
string message = ""; // Android 回传消息
/// <summary>
/// 回传消息,供Android调用
/// </summary>
/// <param name="message"></param>
public void GetMessage(string message)
{
this.message = message;
}
private void OnGUI()
{
try
{
var javaClass = new AndroidJavaClass("com.hello.world.MainActivity2");
javaClass.CallStatic("test");//先试一试
GUI.Label(new Rect(10, 10, 1080, 1920), message);
}
catch (System.Exception ex)
{
GUI.Label(new Rect(10, 10, 500, 500), ex.ToString());
}
}
}
关于 com.hello.world.MainActivity2
在下文中做出解释
二 导出Android Studio 工程
image.png三 在Android Studio中编辑
- 在Android Studio中打开工程,并新建一个
MainActivity2
类
image.png
注意:这里的类和第一步中C#脚本调用Android的类,包的路径应一致
这里的包名是在Unity的Player Setting中设置的
image.png
- 编辑
MainActivity2
类,内容如下
package com.hello.world;
import com.unity3d.player.UnityPlayer;
public class MainActivity2 {
public static void test() {
// System.out.println("调用成功~~~~~ Unity to As");
UnityPlayer.UnitySendMessage("Main Camera","GetMessage","调用成功");
}
}
注:这里是使用的UnitySendMessage方法,将消息回传到Unity中的。
-
在Android Studio中打包APK,测试效果如下
image.png