Unity与Java通信

15 篇文章 0 订阅

转自:http://www.wxdgame.com/blog/2015/11/08/study2/

因为unity需要接入java的sdk,所以今天主要学习了一下相关的通信方法。需要先做如下准备工作:
  1、下载android SDK安装包,http://pan.baidu.com/s/1dDGM8oD,里面会包含sdk和eclipse两个文件夹;
  2、unity工程从Build Settings界面选择android平台,选中Google Android Projects,导出安卓工程;
  3、打开eclipse导入安卓工程,测试编译通过。

  有两种方法可以让unity跟java进行通信:
  第一种写法,在eclipse中自定义个包名,在里面创建一个类,例如我自定义了com.sdk.SDKAPI:

  打开AndroidManifest.xml文件,在application节点下有若干个activity节点,找到android:name=”com.xxxxx.UnityPlayerNativeActivity”属性,后面字符串显示的是目前java工程中当前正在使用的activity类文件,把他改成我们刚才自定义的com.sdk.SDKAPI,然后在unity中代码如下:

  编译运行通过,点击我们放置的按钮,查看log输出,于是我们得到了两个结论:1、java类中的私有方法也可以被unity调用;2、只能调用静态方法。如果我想调用java非静态方法怎么办呢?于是就有了第二种写法,我们修改下unity的代码:

  同时java里的代码也要进行调整:

  这样java里的两个方法就都可以被调用了,那么差别主要包括哪些呢,总共有四点:
  1、java里面的类需要继承UnityPlayerNativeActivity;
  2、unity里面AndroidJavaClass的参数改为:

  3、从刚才得到的class实例中获取currentActivity:

  4、下面在调用call方法的时候,把之前从AndroidJavaClass实例调用改成从AndroidJavaObject调用。

  此外,关于java调用unity的接口比较简单,直接调用com.unity3d.player.UnityPlayer.UnitySendMessage接口就行了。总共包含三个参数,第一个表示unity中包含c#脚本的GameObject实例名称,第二个表示方法名,第三个表示传递的参数,由于只是个字符串类型,所以如果有多个参数需要传递的话,可以像我这样使用JSONObject传递多个参数。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值