Unity与Java通信
来源:互联网 发布:圆谷官方奥特曼数据 编辑:程序博客网 时间:2024/05/17 10:28
转自: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传递多个参数。
- Unity与Java通信
- Unity与IOS通信
- unity与android通信
- Unity与Android通信
- unity客户端与java服务器利用thrift通信初试
- UNITY之使用Socket与java服务器通信
- Unity webGL以及HTML与unity通信
- Unity webGL以及HTML与unity通信
- [Unity3d]unity与html通信
- Unity与安卓通信
- Unity客户端与后台通信
- Unity网络通信与端口通信
- Unity的http通信--unity与python的django通信
- Unity的http通信--unity与python的django通信
- 关于Unity与Android通信与交互
- C# client 与java netty 服务端的简单通信,客户端采用Unity。
- unity网络编程学习(4)与java服务器的Socket通信
- C# client 与java netty 服务端的简单通信,客户端采用Unity。
- 设计原则
- javascript中的this问题
- UItableView的两个重用机制区别
- C#反射:GetManifestResourceStream 获取项目资源为空解决方案
- class文件结构
- Unity与Java通信
- java对redis的基本操作
- C/C++中指向指针的指针传递函数
- UIWebview获取网页中所有图片并加入点击事件,实现浏览图片的效果
- a/b测试,不要再拍脑袋决策了!看看fb/google怎么玩?
- 通过JNI调用android驱动
- Codeforces Round #346 (Div. 2)(A)模拟
- Android Native Crash的log分析和定位
- 使用passport-local-mongoose、passport实现用户验证