目录
环境配置说明
Unity2018.4.12f1(64bit),Visual Studio Pro 2019
前言
从Unity2018.2版本以后,Unity已经可以直接编译 .cpp、.a、.java 文件作为 插件 在Unity程序中使用了,可以节省下使用VS、AS、XCode进行插件开发的导出调试的步骤,十分方便。我们以.java为例
准备一个.java插件的源文件
package com.unity.androidplugin;
public class MathClass {
//方式二 unity设置context
public static int Add(int a,int b)
{
return a+b;
}
}
Unity工程
将MathClass.java文件放在Plugins文件夹下面
public Text Log;
AndroidJavaObject jo_MathClass;
// Start is called before the first frame update
void Start()
{
jo_MathClass = new AndroidJavaObject("com.unity.androidplugin.MathClass");
}
public void MathTest()
{
try
{
int result = jo_MathClass.CallStatic<int>("Add", 2, 3);
Log.text = result.ToString();
}
catch (Exception e)
{
Log.text = e.Message;
}
}
打包apk,测试调用即可调用成功;
此外另外另外两个参考文章调用安卓自带的Toast功能,需要有一个显示容器,在此即为Activity,此功能可以在安卓工程设置,也可以在unity工程内完成
调用安卓自Toast功能
自己写了一下,以供参考,java类
Unity调用
using UnityEngine;
using System;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Text Log;
AndroidJavaClass jc_UnityPlayer;
AndroidJavaObject jo_UnityActivity;
AndroidJavaObject jo_MyJavaClass1;
AndroidJavaObject jo_MyJavaClass2;
AndroidJavaObject jo_MathClass;
// Start is called before the first frame update
void Start()
{
jc_UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo_UnityActivity = jc_UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
jo_MyJavaClass1 = new AndroidJavaObject("com.unity.androidplugin.MyJavaClass1");
jo_MyJavaClass1.CallStatic("SetContext", jo_UnityActivity);
jo_MyJavaClass2 = new AndroidJavaObject("com.unity.androidplugin.MyJavaClass2");
jo_MathClass = new AndroidJavaObject("com.unity.androidplugin.MathClass");
}
void Update()
{
if (Input.GetMouseButtonDown(0) && Input.touchCount == 1)
{
UnityCallJava("单击");
}
else if (Input.GetMouseButtonDown(0) && Input.touchCount == 2)
{
UnityCallJava("双击");
}
}
public void Method1()
{
try
{
jo_MyJavaClass1.CallStatic("ShowToast", "方式一");
Log.text = "方式一";
}
catch (Exception e)
{
Log.text = e.Message;
}
}
public void Method2()
{
UnityCallJava("方式二");
}
void UnityCallJava(string msg)
{
try
{
Log.text = msg;
jo_MyJavaClass2.CallStatic("ShowToast", msg, jo_UnityActivity);
}
catch (Exception e)
{
Log.text = e.Message;
}
}
public void MathTest()
{
try
{
int result = jo_MathClass.CallStatic<int>("Add", 2, 3);
Log.text = result.ToString();
}
catch (Exception e)
{
Log.text = e.Message;
}
}
}
不想复制粘贴的,可以下载工程查看
https://download.csdn.net/download/yhx956058885/12028548
参考