C#调用JAVA(二)调用方法
上期我们创建了jar包并放到了unity中,那么我们继续
如果您还没有看上一期请先看上一期,这是链接
C#调用JAVA(一)制作jar包 - 执著GodShadow - 博客园 (cnblogs.com)
接着我们在unity中创建了简单的UI,并且创建了一个脚本
脚本挂在UseJavaExample 游戏对象上
在这里,我们先看一下Unity API
1 void Start()
2 {
3 //调用静态函数
4 AndroidJavaClass javaClass_1 = new AndroidJavaClass("your class name");
5 javaClass_1.CallStatic("MethodName"); //加载静态空返回值函数
6 javaClass_1.CallStatic<string>("MethodName"); //加载静态有返回值函数
7 javaClass_1.CallStatic("MethodName", "Android Studio"); //加载静态空返回值函数,并为函数赋参数值
8 javaClass_1.CallStatic<int>("MethodName", "Android Studio"); //加载静态有返回值函数,并为函数赋参数值
9 //获取静态字段,设置静态字段
10 javaClass_1.GetStatic<string>("FieldName");
11 javaClass_1.SetStatic("FieldName", "FieldValue");
12
13 //调用非静态函数
14 AndroidJavaObject javaObject_1 = new AndroidJavaObject("your class name");
15 javaObject_1.Call("MethodName"); //加载非静态空返回值函数
16 javaObject_1.Call<string>("MethodName"); //加载非静态有返回值函数
17 javaObject_1.Call("MethodName", "Android Studio"); //加载非静态空返回值函数,并为函数赋参数值
18 javaObject_1.Call<int>("MethodName", "Android Studio"); //加载非静态有返回值函数,并为函数赋参数值
19 //获取非静态字段,设置非静态字段
20 javaObject_1.Get<string>("FieldName");
21 javaObject_1.Set("FieldName", "FieldValue");
22 }
进入脚本写相应代码
脚本字段如下
UseJavaCodeExample.cs代码如下:
1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4 using UnityEngine.UI;
5
6 public class UseJavaCodeExample : MonoBehaviour
7 {
8 public Button[] buttons;
9 public InputField[] textField;
10 public Text infoText;
11 AndroidJavaClass javaClass = null;
12 AndroidJavaObject javaObject = null;
13 // Start is called before the first frame update
14 void Start()
15 {
16 javaClass = new AndroidJavaClass("com.godshadow.test.Test");
17 javaObject = new AndroidJavaObject("com.godshadow.test.Test");
18 SetUpButtonClickEvent();
19 }
20
21 private void SetUpButtonClickEvent()
22 {
23 buttons[0].onClick.AddListener(() => { SetLogsPressed(); });
24 buttons[1].onClick.AddListener(() => { GetLogsPressed(); });
25 buttons[2].onClick.AddListener(() => { SetFieldLogs(); });
26 buttons[3].onClick.AddListener(() => { GetFieldLogs(); });
27
28 buttons[4].onClick.AddListener(() => { SetNamePressed(); });
29 buttons[5].onClick.AddListener(() => { GetNamePressed(); });
30 buttons[6].onClick.AddListener(() => { SetFieldName(); });
31 buttons[7].onClick.AddListener(() => { GetFieldName(); });
32 }
33
34 private void SetLogsPressed()
35 {
36 javaClass.CallStatic("SetLog", textField[0].text);
37 infoText.text = "SetLogs:" + textField[0].text;
38 }
39
40 private void GetLogsPressed() => infoText.text = "GetLogs:" + javaClass.CallStatic<string>("GetLog");
41
42 private void SetFieldLogs()
43 {
44 javaClass.SetStatic("Logs", textField[0].text);
45 infoText.text = "SetFieldLogs:" + textField[0].text;
46 }
47
48 private void GetFieldLogs() => infoText.text = "GetFieldLogs:" + javaClass.GetStatic<string>("Logs");
49
50 private void SetNamePressed()
51 {
52 javaObject.Call("SetName", textField[1].text);
53 infoText.text = "SetName:" + textField[1].text;
54 }
55
56 private void GetNamePressed() => infoText.text = "GetName:" + javaObject.Call<string>("GetName");
57
58 private void SetFieldName()
59 {
60 javaObject.Set("Name", textField[1].text);
61 infoText.text = "SetFieldName:" + textField[1].text;
62 }
63
64 private void GetFieldName() => infoText.text = "GetFieldName:" + javaObject.Get<string>("Name");
65 }
注意:必须打包apk到Android或模拟器才有用
C#调用JAVA(二)调用方法的更多相关文章
- oracle调用JAVA类的方法
导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了, 1.操作系统需要拥有支持loadjava命令的jdk. 2.加 ...
- 如何在Mybatis的xml文件调用java类的方法
在mybatis的映射xml文件调用java类的方法:使用的是OGNL表达式,表达式格式为:${@prefix@methodName(传递参数名称)} 1.如下代码所示:方法必须为静态方法:以下我只是 ...
- .Net调用Java的实现方法
一. IKVM 1.1下载配置IKVM 1.1.1. 下载路径 http://www.ikvm.net/index.html 1.1.2. 设置路径 解压ikvm-0.42.0.3.zip,并将%IK ...
- C#实现调用Java类中方法
基本思路: 用C#实现调用Java编写的类中的方法:重点是将Java编写的程序打包成Jar,然后使用开源工具IKVM将其转化成DLL控件,在.NET环境下调用. 分为以下步骤: 1.下载JDK6(注: ...
- .NET调用JAVA的WebService方法
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...
- delphi xe6 调用java GPS的方法
如果用xe6自带的LocationSensor控件,默认优先使用网络位置,网络位置定位精度不准确,不能满足高精度定位的要求.但xe6自带的LocationSensor控件不能指定网络定位优先还是GPS ...
- JNI C反射调用java方法
前面记录了调用C的学习笔记,现在来记录一下C反射调用Java的笔记.JNI开发学习之调用C方法 Android开发中调用一个类中没有公开的方法,可以进行反射调用,而JNI开发中C调用java的方法也是 ...
- 在c/c++中调用Java方法
JNI就是Java Native Interface, 即可以实现Java调用本地库, 也可以实现C/C++调用Java代码, 从而实现了两种语言的互通, 可以让我们更加灵活的使用. 通过使用JNI可 ...
- Android-WebView与本地HTML (HTML调用-->Java的方法)
上一篇博客 Android-WebView加载网络图片&网页 介绍了 使用WebView去加载网络上的图片与网页; 此篇博客专门介绍 Android-WebView与本地HTML (HTML调 ...
- java native interface JNI 调用Java方法
在上一篇文章中介绍了JNI.以及java调用JNI.这篇讲一下 JNI调用java方法. 通过使用合适的JNI函数,你能够创建Java对象,get.set 静态(static)和 实例(instanc ...
随机推荐
- [bug] HDFS:hdfs missing blocks. The following files may be corrupted
原因 HDFS数据块丢失,需要删除丢失块的元信息 bin/hadoop fsck / -delete 参考 https://blog.csdn.net/lixgjob/article/details/ ...
- bashshell删除列
删除所有空白列cat yum.log | awk '{$1=$2=$3=$4=null;print $0}'>>yum.log7删除文件中的所有空格sed -i s/[[:space:]] ...
- .jnlp 文件打开方式
.jnlp 文件打开方式 jnlp文件打开需要安装jre ,java环境,通过java环境运行即可,下面介绍详细步骤 1.下载.安装最新版jre环境,直接下一步即可 2 java配置 打开控制面板,查 ...
- 5.8-12 watch、which、whereis、locate、updatedb
5.8 watch:监视命令执行情况 watch命令可以以全屏的方式动态显示命令或程序的执行情况. -n 命令执行的间隔时间,默认为2s -d 高亮显示命令结果的变动之处 -t ...
- 安装篇--xshell评估过期解决方法
打开XSHELL6(以自身版本为准,没有版本限制),弹出如上提示框,解决如下: 1.点击取消,不用卸载原来的,直接进入官网下载安装免费授权的https://www.netsarang.com/ 2.点 ...
- anaconda同时集成Python2 和 Python3
参考帖子,亲测有效: 利用anaconda同时使用python2和python3的方法 注意:最后一步是再对应的python环境中输入:conda install anaconda
- 基础BaseController
1.依赖状态枚举 /** * status enum */ public enum Status { SUCCESS(0, "success", "成功"), ...
- FPGA多功能应用处理器
FPGA多功能应用处理器 编解码加速卡 概述: 对于H.265/HEVC/VP9编解码处理,FPGA编解码加速卡方案有着完善的功能和preset配置,支持最多的有利于提高画质和降低bitrate的功能 ...
- Linux BSP非标准HDMI分辨率
Linux BSP非标准HDMI分辨率 Intrinsyc公司发布了它的一个新的Linux BSP软件的发布 打开-Q820 开发套件基于Linux内核版本.支持的软件功能包括HDMI输出,可以支持标 ...
- Harmony生命周期
Harmony生命周期 系统管理或用户操作等行为,均会引起Page实例在其生命周期的不同状态之间进行转换.Ability类提供的回调机制能够让Page及时感知外界变化,从而正确地应对状态变化(比如释放 ...