上期我们创建了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. C#·对于BOM头之完全解决方案

    阅文时长 | 0.46分钟 字数统计 | 798.4字符 主要内容 | 1.引言&背景 2.使用C#写入带有/不带有BOM头的文件? 3.对于读取文件时,避免BOM头造成的异常. 4.声明与参 ...

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

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

  3. Envoy:经过envoy代理后获取客户端真实IP

    在envoy作为前端代理时,用户ip的获取很重要,一般获取ip的方式.都是通过Header中的 X-Forward-For. X-Real-IP或 Remote addr 等属性获取,但是如果确保En ...

  4. [Java] Solr & Elasticsearch

    背景 实现网站自带的搜索功能,如淘宝中的商品搜索 全文搜索 数据分类 结构化数据:固定格式或长度有限的数据,如数据库.元数据等 非结构化数据:不定长或无固定格式的数据,如邮件.word文档等 搜索分类 ...

  5. 统一UOS操作系统 修改源地址

    统一UOS操作系统 修改源地址 问题: 执行apt-get update的时候提示: root@sugon-PC:/etc/apt# apt-get update -y错误:1 https://uos ...

  6. 自己封装的mysql应用类示例

    from pymysql import *class my_mysql_mud(object): def __init__(self,host,port,db,user,passwd,charset= ...

  7. IDEA workspace.xml 在 git 中无法忽略 ignore 问题

    问题描述 关于 .idea 的文件夹中的 workspace.xml 设置 ignore 之后每次 commit 依旧提示需要提交改变,这就会导致, 每次merge就会导致提示"本地文件改变 ...

  8. 10.13 nc:多功能网络工具

    nc命令 是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的TCP和UDP端口,进行端口扫描,处理IPv4和IPv6数据包.     如果系统没有nc命令,那么可以手 ...

  9. Java并发:ThreadLocal的简单介绍

    作者:汤圆 个人博客:javalover.cc 前言 前面在线程的安全性中介绍过全局变量(成员变量)和局部变量(方法或代码块内的变量),前者在多线程中是不安全的,需要加锁等机制来确保安全,后者是线程安 ...

  10. 第13讲 | 套接字Socket:Talk is cheap, show me the code

    第13讲 | 套接字Socket:Talk is cheap, show me the code 基于 TCP 和 UDP 协议的 Socket 编程.在讲 TCP 和 UDP 协议的时候,我们分客户 ...