Unity 调用 Android

2019-07-30  本文已影响0人  周末的游戏之旅

最近接了一个小项目,大概是需要在Android里做人脸识别,然后将数据回传给Unity做计算。
看了许多网上的文章,大多都是在Android Studio中导出jar包,放到unity里,然后在Unity里调用。我测试后发现抛异常,找不到jar包中的类。可能是我的方式有问题(如果有大佬知道怎么解决,请教我一下😂)


正文

步骤大致分为三步

  1. 在Unity中编辑脚本
  2. 在Unity导出 Android Studio 工程
  3. 在 Android Studio 中再次编辑

一 在Unity中编辑

  1. 新建一个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中编辑

  1. 在Android Studio中打开工程,并新建一个 MainActivity2
    image.png

注意:这里的类和第一步中C#脚本调用Android的类,包的路径应一致

这里的包名是在Unity的Player Setting中设置的


image.png
  1. 编辑 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中的。

  1. 在Android Studio中打包APK,测试效果如下


    image.png
上一篇下一篇

猜你喜欢

热点阅读