上期我们创建了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 }
UseJavaCodeExample.cs

注意:必须打包apk到Android或模拟器才有用

C#调用JAVA(二)调用方法的更多相关文章

  1. oracle调用JAVA类的方法

    导入jar包 在oracle中导入需要的jar包,我们把编辑好的java类打成jar包,直接在oarcle里面写简单的调用就可以了,  1.操作系统需要拥有支持loadjava命令的jdk.  2.加 ...

  2. 如何在Mybatis的xml文件调用java类的方法

    在mybatis的映射xml文件调用java类的方法:使用的是OGNL表达式,表达式格式为:${@prefix@methodName(传递参数名称)} 1.如下代码所示:方法必须为静态方法:以下我只是 ...

  3. .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 ...

  4. C#实现调用Java类中方法

    基本思路: 用C#实现调用Java编写的类中的方法:重点是将Java编写的程序打包成Jar,然后使用开源工具IKVM将其转化成DLL控件,在.NET环境下调用. 分为以下步骤: 1.下载JDK6(注: ...

  5. .NET调用JAVA的WebService方法

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...

  6. delphi xe6 调用java GPS的方法

    如果用xe6自带的LocationSensor控件,默认优先使用网络位置,网络位置定位精度不准确,不能满足高精度定位的要求.但xe6自带的LocationSensor控件不能指定网络定位优先还是GPS ...

  7. JNI C反射调用java方法

    前面记录了调用C的学习笔记,现在来记录一下C反射调用Java的笔记.JNI开发学习之调用C方法 Android开发中调用一个类中没有公开的方法,可以进行反射调用,而JNI开发中C调用java的方法也是 ...

  8. 在c/c++中调用Java方法

    JNI就是Java Native Interface, 即可以实现Java调用本地库, 也可以实现C/C++调用Java代码, 从而实现了两种语言的互通, 可以让我们更加灵活的使用. 通过使用JNI可 ...

  9. Android-WebView与本地HTML (HTML调用-->Java的方法)

    上一篇博客 Android-WebView加载网络图片&网页 介绍了 使用WebView去加载网络上的图片与网页; 此篇博客专门介绍 Android-WebView与本地HTML (HTML调 ...

  10. java native interface JNI 调用Java方法

    在上一篇文章中介绍了JNI.以及java调用JNI.这篇讲一下 JNI调用java方法. 通过使用合适的JNI函数,你能够创建Java对象,get.set 静态(static)和 实例(instanc ...

随机推荐

  1. Spring Boot 2.5.0 发布:支持Java16、Gradle 7、Datasource初始化机制调整

    今年520的事情是真的多,娱乐圈的我们不管,就跟DD一起来看看 Spring Boot 2.5.0 的发布吧!看看都带来了哪些振奋人心的新特性和改动! 主要更新 支持 Java 16 支持 Gradl ...

  2. SpringCloud-OAuth2(一):基础篇

    关于Oauth2 的详细介绍官网地址:https://developer.okta.com/blog/2017/06/21/what-the-heck-is-oauth 1:什么是OAuth2 首先, ...

  3. 通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧

    之前有很多同学提到如何做容器调试,特别是k8s环境下的容器调试,今天就讲讲我是如何调试的.大家都知道在vs自带的创建项目模板里勾选docker即可通过F5启动docker容器调试.但是对于启动在k8s ...

  4. [BD] Sqoop

    什么是Sqoop 数据交换工具(ETL):RDBMS(MySQL.Oracle等)<-->Sqoop<-->HDFS(HBase.Hive等) 基于JDBC 执行数据交换时,本 ...

  5. [OS] 操作系统课程(三)

    工具 源码阅读:understand 源码文档自动生成工具:Doxygen 编译环境:gcc 运行环境:x86机器或QEMU 调试工具:QEMU+(GDB or IDE) IDE:Eclipse-CD ...

  6. 008.Ansible文件管理模块

    一  stat模块 检查文件状态使用,模块获取文件的状态等信息,类似与linux中的STAT命令可以用来获取文件的属主.可读/写.文件状态等信息 [root@node1 ansible]#  stat ...

  7. Linux服务之nginx服务篇四(配置https协议访问)

    一.配置nginx支持https协议访问 编译安装nginx的时候需要添加相应的模块--with-http_ssl_module和--with-http_gzip_static_module(可通过/ ...

  8. HC-05底层驱动

    INT8U BT_INIT(const char * pNAME, INT32U BAUD, INT8U ROLE, INT32U PSWD) { INT8U OS_ERR = OS_ERR_NONE ...

  9. SpringBoot 整合 mybatis 开启驼峰命名规则自动转换

    引言 在使用 MyBatis 进行实际项目开发时,如果数据库表字段名与Java 实体类属性名不一致,映射时则需要编写表字段列表与 Java 实体类属性的映射关系,即resultMap,如下: < ...

  10. 安装beanstalkd队列问题——No package beanstalkd available

    CentOS7.4安装beanstalkd 时无可用源 No package beanstalkd availableError:Nothing to do 可从以下获取:wget /etc/yum. ...