上期我们创建了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. CentOS 7系统启动后怎么从命令行模式切换到图形界面模式

    CentOS 7系统启动后怎么从命令行模式切换到图形界面模式原创传智播客官方博客 最后发布于2020-04-08 15:44:43 阅读数 88 收藏展开一.存在问题 在VMware虚拟机中成功安装c ...

  2. Linux性能分析利器——火焰图的安装使用

    火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原生提供的性能分析工具,会返回 CPU 正在执行的 ...

  3. 运维常用shell脚本二(压缩文件、过滤不需要的文件、检测进程)

    一.压缩指定目录下的文件并删除原文件 #!/bin/bashZIP_DAY=7 function zip { local dir=$1 if [ -d $dir ];then local file_n ...

  4. BLDC 无刷电机FOC驱动 STM32官方培训资料

    STM32 PMSM FOC SDK V3.2 培训讲座一http://v.youku.com/v_show/id_XNTM2NjgxMjU2.html?from=s1.8-1-1.2STM32 PM ...

  5. 爱心跳动效果 CSS实现

    爱心跳动效果 CSS实现 实现效果 砰砰砰 实现原理 通过动画改变每个元素的高度,从而实现每个元素高度变化的效果,为了使每个元素依次跳动,给每个元素添加一定的延时效果,使得从效果元素依次跳动 代码分析 ...

  6. thinkphp api接口 统一结果返回处理类

    20210602 修正 wqy的笔记:http://www.upwqy.com/details/216.html 返回结果处理,归根结底 主要是有两点 数据结构和返回的数据类型 1.数据类型 :一般情 ...

  7. [论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding

    [论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding 本文结构 ...

  8. 通过git将项目传到github上

    lenovo@LAPTOP-3KMEN0B2 MINGW64 /e/Users/lenovo/springboot-project/forum $ ls forum.iml HELP.md mvnw* ...

  9. pytest - 打标记:mark功能

    对用例打标记,运行的时候,只运行打标记的用例.如冒烟测试 打标记步骤 1.先注册标记名 在配置文件:pytest.ini 注册标记名,注意必须是这个文件名 标签名加冒号后面可以写说明,必须是英文 2. ...

  10. Python+Selenium学习笔记4 - submit&get_attribute

    1.submit() submit()方法用于提交表单.如在搜索框输入关键字后按回车键进行查询操作,就可用submit()方法模拟.若不能按回车键进入下一步,则不能用submit()举例,百度的查询提 ...