上期我们创建了jar包并放到了unity中,那么我们继续

如果您还没有看上一期请先看上一期,这是链接

C#调用JAVA(一)制作jar包 - 执著GodShadow - 博客园 (cnblogs.com)

接着我们在unity中创建了简单的UI,并且创建了一个脚本

C#调用JAVA(二)调用方法

 

  脚本挂在UseJavaExample 游戏对象上

在这里,我们先看一下Unity API

C#调用JAVA(二)调用方法

 

 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 }

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-15
  • 2022-12-23
  • 2021-05-13
  • 2021-11-30
  • 2021-08-22
  • 2021-12-21
相关资源
相似解决方案