Android|Unity直接使用.java文件

目录
环境配置说明
前言
准备一个.java插件的源文件
Unity工程
调用安卓自Toast功能
不想复制粘贴的,可以下载工程查看

环境配置说明
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("Add", 2, 3); Log.text = result.ToString(); } catch (Exception e) { Log.text = e.Message; }}

打包apk,测试调用即可调用成功;
此外另外另外两个参考文章调用安卓自带的Toast功能,需要有一个显示容器,在此即为Activity,此功能可以在安卓工程设置,也可以在unity工程内完成
调用安卓自Toast功能 自己写了一下,以供参考,java类
Android|Unity直接使用.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("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("Add", 2, 3); Log.text = result.ToString(); } catch (Exception e) { Log.text = e.Message; } } }

不想复制粘贴的,可以下载工程查看 https://download.csdn.net/download/yhx956058885/12028548

参考
https://blog.csdn.net/final5788/article/details/96596679
【Android|Unity直接使用.java文件】https://blog.csdn.net/pgw00k/article/details/83542724

    推荐阅读