1、通过C#调用Java的方法:

在C#中添加调用的一些代码,利用Unity提供的一些接口实现调用Java!

private const string JAVA_CLASS_Name = "com.unity3d.player.UnityPlayer";

private void CallJavaFunc(string javaFuncName,params object[] args)

{

try

{

//获取到AndroidJavaClass,至于这里为什么调用这个类,我也不是很清楚

using (AndroidJavaClass jc = new AndroidJavaClass(JAVA_CLASS_Name))

{

//获取到Activity

using (AndroidJavaObject jo = jc.GetStatic("currentActivity"))

{

//调用Java方法

jo.Call(javaFuncName,args);

}

}

}

catch (System.Exception ex)

{

Debug.Log("callSdk error:" + ex.Message);

}

}

//C#里就可以通过这个方法调用Java里的方法了

public void Test1()

{

int num = 1;

CallJavaFunc("JavaFuncName",num);

}

在java中主要是添加被调用的方法,方法名就是上边的字符串参数(JavaFuncName),参数需要一一对应!

public class MainActivity extends UnityPlayerActivity

{

public void JavaFuncName(final int num)

{

Log.i("C#调用了JavaFuncName,参数num:",String.valueOf(num));

}

}

我是使用eclipse创建的android工程,java中的activity需要继承UnityPlayerActivity,继承这个activity需要在你的android中填 加classes.jar包,这个包在:

你Unity的安 装路径\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release \ C lasses下,

这样就可以调用Java的方法了!

2、通过Java调用C#的方法:

在Java中添加调用的一些代码,Java调用C#主要是通过Unity封装的classes.jar包里面的UnitySendMessage方

法传递 参数实现,因为该方法只能将一个参数传递给C#的方法,所以传递多个参数的时候可以使用json。

//调用

public void Test2()

{

JSONObject pms=new JSONObject();

try {

//参数只能参一个,所以包装成json对象

pms.putOpt("FuncName","Test2");

pms.putOpt("num",1);

} catch (JSONException e) {

e.printStackTrace();

}

//利用Unity提供的发送消息接口给Unity传递参数,

//GameObject是Unity中物体的名称,

//CSharpFunc是C#中方法的名称,

//需要将带有CSharpFunc这个方法的C#脚本挂在GameObject这个物体上

UnityPlayer.UnitySendMessage("GameObject","CSharpFunc",pms.toString());

}

在C#中 添加被调用的方法,如果传递过来的是多个参数,需要将参数一一解析出来使用 。

//被调用

public void CSharpFunc(string data)

{

JsonData json = JsonMapper.ToObject(data);

string num = (string)json["num"];

string name = (string)json["FuncName"];

Debug.Log(string.Format("被Java方法调用了,Java方法名字是:{0},参数是{1}",name,num));

}

相关文章

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

unity调用普通java类_Unity中C#和Java的相互调用实例代码相关推荐

  1. android 调用java类_Android中在WebView里实现Javascript调用Java类的方法

    搜索热词 为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制.只要调用addJavascriptInterface方法 ...

  2. java 遍历request_java 遍历request中的所有表单数据的实例代码

    java 遍历request中的所有表单数据的实例代码 实例如下: Enumeration rnames=request.getParameterNames(); for (Enumeration e ...

  3. Java类Demo中存在_Java中的数据类型转换

    先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...

  4. java jar 目录_将Java类路径中的所有jar包括在一个目录中

    有没有一种方法可以将所有的jar文件包含在类路径的目录中? 我正在尝试java -classpath lib / *.jar :. my.package.Program,它无法找到当然在这些罐子里的类 ...

  5. JAVA 类声明中关键字public的作用

    JAVA类声明中关键字public起到什么作用呢?如下Hello类的声明,按着字面的意思理解是:Hello类是公共的,要求Hello类与 类文件名必须保持一致,并且一个java文件中只能有一个publ ...

  6. Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )

    Java类Demo中存在方法func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{float func1(){int i=1;r ...

  7. python文件调用python文件_自己写的python文件如何相互调用

    自己写的python文件如何相互调用?Python中的模块库十分常用,对于常用的模块可以自己动手自定义,但是如何进行调用呢? 模块相互调用 同级目录调用时的两种方法import module prin ...

  8. JAVA类思维_面向对象思维 Java中的类和对象及其应用

    一.面向过程与面向对象 面向过程: 从事务执行者的角度思考问题,我该干什么  重点在过程----事务流程 面向对象: 从事务的指挥者角度思考问题,我应该找谁干什么  重点在对象 面向对象的优点: 1. ...

  9. 一个java类可以有_一个.java文件中可以有几个同级类?

    1.在一个.java文件中可以有多个同级类(和public一样的位置,注意不是内部类).其修饰符只可以public/abstract/final/和无修饰符,不能是其他的protected/priva ...

最新文章

  1. 数颜色(洛谷-P1903)
  2. Android ——SoundPool播放音频
  3. Apache Spark开发介绍
  4. Objective-C 【从文件中读写字符串(直接读写/通过NSURL读写)】
  5. java技术栈_七天串起java技术栈-开篇
  6. (转)微信扫码登录网页实现原理
  7. 蓝桥杯 ADV-97 算法提高 十进制数转八进制数
  8. 遥感影像辐射校正,地形校正等
  9. 【深度学习之Tensorflow2.0】函数matmul和函数multiply的用法
  10. usb为什么计算机无法识别网络,电脑的usb网卡无法识别怎么办
  11. Fantastic Four: 具有恶意安全的诚实大多数四方安全计算
  12. python小模块----cookie
  13. iphone系统架构以及各层提供的主要服务
  14. 把QQ聊天记录插入数据库中
  15. (SQL)修改表结构[字段类型]、表字段长度,
  16. 使用Java解压zip格式压缩包
  17. karma测试html,常用的前端自动化测试工具介绍 —— Karma(二)
  18. 统计 | 统计功效 | R语言
  19. H3C路由器如何配置Telnet服务?
  20. pytorch项目怎么跑?

热门文章

  1. 杭州(含嘉兴,绍兴,金华,湖州,义乌)Uber优步司机奖励政策(1月18日~1月24日)...
  2. SQL语句对象化,先看示例代码.
  3. 剑指 Offer 05. 替换空格 简单
  4. 人工智能和神经科学之间有什么关系?诺奖得主这样说……
  5. file的open()和read()
  6. xrdp安装包linux,linux xrdp0.6 安装
  7. android自动创建桌面,Android应用启动后自动创建桌面快捷方式的实现方法
  8. python常用函数表-python-列表常用函数
  9. Spring中 @Autowired注解与@Resource注解的区别
  10. 06_一对一和一对多