注意:unity3d与原生代码的调用需要pro版本,此点注意了。

一、IOS平台,由于IOS平台的原生应该是objectC,所以通讯起来非常的简单,

1、原生代码调用u3d代码:

1.1、在Xcode项目上调用unity3d自带的dll框架,使用其中的发消息命令(UnitySendMessage)就可以向u3d的代码里发送事件消息了,这里第一个参数便是u3d约定的gameObject对象名和函数名,第三个参数是额外的消息参数。

1.2、然后是接收端,也就是unity3d这里的代码 ,这里需要在unity3d那里定义一个对象,对象的名称是xcode那里发消息事件所约定好的,然后在gameObject上挂上一个脚本,这里的脚本名,也就是类名无关系,因为发消息只认函数名不认类名的,函数名要定义成静态的方法,这样才能被原生的代码所找到,然后就完成了整个事件的通讯了

2、U3D调用原生代码

2.1、在Xcode项目使用DllImport和extern关键字定义好一个静态的方法,这个方法到时供u3d所调用

2.2、在u3d项目里使用extern c方法来调用xcode项目的方法,这里的方法名要与xcode里的方法名保持一致,当然此方法也必须是静态的。

具体的官方说明:

http://docs.unity3d.com/Documentation/Manual/PluginsForIOS.html

二、android的原生代码通讯:

1、如果迩是使用NDK开发那就简单了,其实和xcode的object-c差不多,因为ndk是使用c++开发的所以类c之间和通讯都差不多。

2.1、但是基于目前的公开android的api,多数为java语言的,这部分就比类c语言通讯复杂得多,讲解这部分狠麻烦,好在unity公司提供了一个样例在asset store里可以参考,另外unity公司也提供了相关的api来供java语言和c#语言的通讯,这几个类在unity3d的官方脚本都可以找到,都是以android打头的类,专司这档事,这样子利用这些API使得java与c#之间的通讯可以在一定程度上简化。另外一个android通讯

2.2、另外一个android的难点在于AndroidManifest.xml,这个文件相信搞过android开发的都弄过,这里是配置一些android原生属性的一些方法,这里的问题在于,当迩有几个android插件的时候,请把他们的androidManifest.xml的数据合并成一个文件,不然产生的配置会发生冲突

这里是官方讲解android与unity3d之间通讯的页面:http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html

这里有一个google play原生功能调用的示例,可以从asset store这里下得来观摩,这里有关于unity代码的源代码和java端的源代码之间的互相调用,地址是https://www.assetstore.unity3d.com/#/content/3190

最新文章

  1. 让Visual Studio Code对jQuery支持智能提示!
  2. SSIS2012 项目部署模型
  3. c#-二分查找-算法
  4. 安装Adobe Flash Player
  5. JavaScript 节点操作Dom属性和方法(转)
  6. 关于ARP欺骗与MITM(中间人攻击)的一些笔记( 二 )
  7. ASP.NET MVC应用程序使用axd格式文件
  8. FTP主动模式和被动模式的区别
  9. 让App中加入LruCache缓存,轻松解决图片过多造成的OOM
  10. hdoj:2044
  11. 【Loadrunner_WebService接口】对项目中的GetProduct接口生成性能脚本
  12. Redis---List(链表)
  13. [js常用]页面滚动的顶部,指定位置或底部,平滑滚动
  14. 02python程序和用户交互
  15. 将javaweb项目部署到阿里云服务器
  16. Android仿掌上英雄联盟首页,实现折叠效果
  17. nat123动态域名解析软件使用教程
  18. Groovy操作符
  19. MyBatis入门篇
  20. RabbitMQ学习之:(一)初识、概念及心得

热门文章

  1. 《effective c++》问题总结
  2. HTTP-常用配置
  3. Yii2 AR模型搜索数据条数不对,AR模型默认去重
  4. cf 1016C
  5. poj 2676 数独问题 dfs
  6. sqlserver常用知识点备忘录(持续更新)
  7. 第4章--变量,作用域和内存问题 jquery
  8. Android library projects cannot be launched解决方法
  9. django 修改urls.py 报错误:TypeError: view must be a callable or a list/tuple in the case of include().
  10. Wannafly模拟赛3