首页 > 其他分享 >unity3d调用jar类中的方法和属性

unity3d调用jar类中的方法和属性

时间:2023-01-04 13:37:45浏览次数:37  
标签:unity3d text jar TryStaticPublic jo TryPublic public 类中


这里用的unity3d的版本是5.3.2

在eclipse里新建一个java工程,并导出成jar。

unity3d调用jar类中的方法和属性_android

package com.innyo.androidplugin;

public class apTest {

public apTest(String inString) {
tryProp = "propties is ok.<" + inString + ">";
}

public String tryProp = "public propties is return.";

public static String tryStaticProp = "static propties is return.";

public String TryPublic() {
return "public method run ok.";
}

public String TryPublic(String inString) {
return "public method with prop run ok.<" + inString + ">";
}

public static String TryStaticPublic() {
return "static public method run ok.";
}

public static String TryStaticPublic(String inString) {
return "static public method whith prop run ok.<" + inString + ">";
}
}


导出为jar

unity3d调用jar类中的方法和属性_unity3d_02

unity3d调用jar类中的方法和属性_unity3d_03


新建unity3d工程,导入jar文件。

unity3d调用jar类中的方法和属性_java_04

新建一个场景,把内容输出到text上显示,

using UnityEngine;
using System.Collections;
using System;
using UnityEngine.UI;

public class TryPlugin : MonoBehaviour
{

public Text t;

public void ToTry ()
{
try {
t.text = "start android plugins";

t.text = t.text + "\r\n";
AndroidJavaClass jc = new AndroidJavaClass ("com.innyo.androidplugin.apTest");
t.text = t.text + "AndroidJavaClass jc:" + jc.ToString ();

t.text = t.text + "\r\n";
t.text = t.text + "tryProp:" + jc.Get<string> ("tryProp");

t.text = t.text + "\r\n";
t.text = t.text + "tryStaticProp:" + jc.GetStatic<string> ("tryStaticProp");

t.text = t.text + "\r\n";
t.text = t.text + "TryPublic:" + jc.Call<string> ("TryPublic");

t.text = t.text + "\r\n";
t.text = t.text + "TryPublic:" + jc.Call<string> ("TryPublic", "unity3d input");

t.text = t.text + "\r\n";
t.text = t.text + "TryStaticPublic:" + jc.CallStatic<string> ("TryStaticPublic");

t.text = t.text + "\r\n";
t.text = t.text + "TryStaticPublic:" + jc.CallStatic<string> ("TryStaticPublic", "unity3d input");

t.text = t.text + "\r\n";
t.text = t.text + "----------------------------------------";

t.text = t.text + "\r\n";
AndroidJavaObject jo = new AndroidJavaObject("com.innyo.androidplugin.apTest","unity3d jo build");
t.text = t.text + "AndroidJavaObject jo:" + jo.ToString ();

t.text = t.text + "\r\n";
t.text = t.text + "tryProp:" + jo.Get<string> ("tryProp");

t.text = t.text + "\r\n";
t.text = t.text + "tryStaticProp:" + jo.GetStatic<string> ("tryStaticProp");

t.text = t.text + "\r\n";
t.text = t.text + "TryPublic:" + jo.Call<string> ("TryPublic");

t.text = t.text + "\r\n";
t.text = t.text + "TryPublic:" + jo.Call<string> ("TryPublic", "unity3d input");

t.text = t.text + "\r\n";
t.text = t.text + "TryStaticPublic:" + jo.CallStatic<string> ("TryStaticPublic");

t.text = t.text + "\r\n";
t.text = t.text + "TryStaticPublic:" + jo.CallStatic<string> ("TryStaticPublic", "unity3d input");

} catch (Exception ex) {
t.text = t.text + "\r\n";
t.text = t.text + ex.Message;
}
}
}


编译成安卓,然后运行,点击按钮,可以看到以下结果

unity3d调用jar类中的方法和属性_android_05


AndroidJavaClass只能调用静态方法,获取静态属性

AndroidJavaObject能调用公开方法和公开属性

另外,jar文件,不一定非要放在plugins/android目录下。

例子代码:​​javascript:void(0)​​


=====================================


如果是调用jar类中的枚举,而且枚举必须不是类下面的,方法如下

java

package com.innyo.androidplugin;

public enum TryEnum {
red,green,yellow,blcak

}


unity3d

AndroidJavaObject redValue = 
new AndroidJavaClass("com.innyo.androidplugin.TryEnum").GetStatic<AndroidJavaObject>("red");




如果是调用jar类中的接口,实在是不会在java中写事件接口,只好拿别人的用。

unity3d

public class DateCallback : AndroidJavaProxy
{
public DateCallback ()
: base ("com.amap.api.location.AMapLocationListener")
{
}

void onLocationChanged (AndroidJavaObject amapLocation)
{

}
}


等效于java中写

public class Hight_Accuracy_Activity implements AMapLocationListener {

@Override
public void onLocationChanged(AMapLocation loc) {

}
}





标签:unity3d,text,jar,TryStaticPublic,jo,TryPublic,public,类中
From: https://blog.51cto.com/u_15929643/5988302

相关文章

  • unity3d,android平台下,高德地图搜索附近
    今天把高德地图androidsdk搜索附近的功能搞定了。和定位一样,引入jar,AndroidManifest.xml和定位的一样,没有需要修改的地方。改的多的是Java插件。原java示例代码中,query=n......
  • java spring jar包下载
    想学习一下javaspring,真是不知道怎么来着手。在网上查了一下eclipse里建spring工程的方法:1、创建Java项目转到 文件菜单- 新建- 项目- Java项目。输入项目名称,例如......
  • unity3d,android平台下,高德地图定位
    这里,用了一个比较偷懒的办法,直接用高德提供的android定位sdk,没有重新编译。好处是省事,坏处是,没法修改默认的定位模式。部分信息获取不到。如果需要完整的功能,还是需要重新编......
  • unity3d 尝试 基于地理定位的 增强现实
    首先说,这个尝试失败,属于死在去医院的路上那种。基于地理定位的增强现实,AR全息实景,是一种高大上的说法,说直白点就是山寨类似随便走这样的应用。打开应用,搜索周边信息,然后再把......
  • unity3d,异步加载场景
    很简单,代码如下:usingUnityEngine;usingSystem.Collections;usingUnityEngine.UI;publicclassLoading:MonoBehaviour{publicSliderloading_bar;privateAsyncO......
  • 《Unity3D平台AR开发快速上手--基于EasyAR4.0》随书资源和相关说明
    新手《Unity3D平台AR开发快速上手–基于EasyAR4.0》上市了,现在京东和淘宝都有卖。书分为2个部分,第一部分是EasyAR4.0基础内容和使用,第二部分是利用EasyAR的稀疏空间地图做室......
  • Maven 查看jar包依赖树
    查找出具体jar包的依赖找出gropuId,artifactId如图所示这里的groupid,artifactId用冒号分割的。上图中看出来该jar包所对应pom.xml配置的groupId和artifactId为or......
  • 上传jar包到nexus私服
    问题:自己写的分布式锁sdk包,上传到nexus私服后,然后在使用demo中,通过maven依赖从nexus下载分布式锁sdk包,发现下载的包有问题。分布式锁sdk包中引用的jar包没有下载下来。通......
  • find-a-jar-file-given-the-class-name
     Savethisasfindclass.sh(orwhatever),putitonyourpathandmakeitexecutable:#!/bin/shfind"$1"-name"*.jar"-execsh-c'jar-tf{}|grep-H--label{......
  • 利用Barrier使局域网下的Linux(Majaro)和Window10共享同一套键盘鼠标
    项目场景:现有两台电脑:一台笔记本(Win10)连接无线网(DHCP)一台工作站(Linux-Manjaro)连接无线网(DHCP)为了简化桌面、便于操作,打算让笔记本和工作站共用一套键盘鼠标。问题分......