上期我们创建了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. 反向解析 参数替换 reverse

  2. ipmitool -I lanplus -H 10.1.81.90 -U admin -P admin mc reset cold

    ipmitool -I lanplus -H 10.1.81.90 -U admin -P admin mc reset cold

  3. SecureCRT自动保存日志设置

    SecureCRT自动保存日志设置原创杭州_燕十三 最后发布于2017-03-26 22:00:08 阅读数 24731 收藏展开 嵌入式开发经常由于无法debug而只能使用串口打印日志的方式调试代码 ...

  4. Microk8s 安装helm3

    Microk8s 安装helm3 原本使用官方的命令时这样的.但是使用的是官方的源,网络极不稳定.就出现了下面的状况.解决方法是更改为国内的源. microk8s enable helm3 curl: ...

  5. jsp表单传值后在页面中文显示乱码

    主要通过添加以下代码来实现(前提是其他处的编码都设置成了utf-8): response.setContentType("text/html;charset=utf-8"); re ...

  6. Java反射机制详情(2)

    | |目录 运行环境 Java语言的反射机制 Class中的常用方法(获得类的构造方法) Class中的常用方法(获得类的属性) Class中的常用方法(获得类的方法) 反射动态调用类的成员 1.运行 ...

  7. 使用原生JS,实现鼠标点击爱心效果 !!!

    使用原生JS,实现鼠标点击爱心效果 !!! 引言: 在很多时候我们都需要实现鼠标点击出现图案或者文字这样的效果,对于用户而言,这样的体验是很极致的.其实实现起来也很简单,下面一起来学习一下吧.文末附上 ...

  8. 加载动画效果 HTML+ CSS

    加载动画效果 写在前面 在无限的时间的河流里,人生仅仅是微小又微小的波浪.--郭小川 实现效果 实现原理 通过2个伪元素来设置3条颜色边框 通过定位将3个圆弧边框层叠再一起,再通过旋转实现一个圆的效果 ...

  9. Go语言的函数06---闭包函数

    package main import "fmt" /* 李逵和武松的Study方法的逻辑是几乎一模一样的 然而为了分别保存两人的学习进度,需要开辟两个全局变量,函数内部的需要使用 ...

  10. 分布式调度任务-ElasticJob

    一:问题的引出与复现 在一个风和日丽的工作日,公司运营发现系统的任务数据没有推送执行,整个流程因此停住了.我立马远程登陆服务器,查看日志,好家伙,系统在疯狂的打印相同的一段日志:c.d.d.j.i.e ...