本文主要是对unity中如何在Android和iOS中调用Native API进行介绍。

首先unity支持在C#中调用C++ dll,这样可以在Android和iOS中提供C++接口在unity中调用。利用这一特性,可以扩展unity的功能。例如集成和调用第三方库。同时为了满足对unity接口的一致性,可以考虑在android和iOS上提供相同的接口供C#调用。

这里列举以下两个例子。

1. 1. 以弹出一个覆盖部分屏幕的webview为例来说明如何从C#调用Native接口。

2. 2. 简单的C# -> C++ -> Java/ObjC -> C#的异步回调实现(会在下一期中给出实现)

由于android和iOS平台加载库的方式不同(android为动态加载,iOS为静态加载),在C#中针对不同平台对dll 接口的引用声明是不一样的。本例对应的接口声明如下:

 public class CallNativeAPI { 

 #if UNITY_EDITOR
public static void OpenWebView(string url) {
return;
} public static void SumNum(int v1, int v2) {
TestUnityEditor.SumNum(v1, v2); return;
}
#elif UNITY_IPHONE
[DllImport ("__Internal")]
public static extern void OpenWebView(string url);
[DllImport ("__Internal")]
public static extern void SumNum(int v1, int v2);
#elif UNITY_ANDROID
[DllImport ("libtestunity", CallingConvention = CallingConvention.Cdecl)]
public static extern void OpenWebView(string url);
[DllImport ("libtestunity", CallingConvention = CallingConvention.Cdecl)]
public static extern void SumNum(int v1, int v2);
#endif public static void SumNumForResult(int v1, int v2, CallbackManager.ResultCallback callback) { TestCallbackManager.sumNumCallback.SetResultCallBack(new CallbackManager.ResultCallback(callback)); SumNum(v1, v2); return;
}
} namespace CallbackManager
{
public delegate void ResultCallback(int result); public class SumNumManager{
public SumNumManager()
{
} private ResultCallback resultCallback; public void SetResultCallBack(ResultCallback callback)
{
resultCallback = callback;
} public void SendResult(int result)
{
resultCallback(result);
}
}
} public class TestCallbackManager { public static CallbackManager.SumNumManager sumNumCallback = new CallbackManager.SumNumManager(); }

转载至:

Unity在Android和iOS中如何调用Native API

最新文章

  1. MySQL笔记---视图,存储过程, 触发器的使用入门
  2. 记在thinkPHP中一个创建模型的小错误
  3. SGU 102
  4. Java_JVM学习笔记(深入理解Java虚拟机)___重点
  5. Static Classes and Static Class Members
  6. Raspberry Pi + 3个USB摄像头 + Motion(简易监控设备配置记录1——介绍以及安装) 分类: Raspberry Pi 服务器搭建 2015-04-12 19:21 226人阅读 评论(0) 收藏
  7. [转]C++学习心得
  8. 程序员的自我救赎---1.4.1:核心框架讲解(DAL)
  9. haproxy实现会话保持(1):cookie
  10. mariadb插入中文数据乱码解决过程
  11. 在access转sql server指定的转换无效
  12. pyhton 监听文件输入实例
  13. Codeforces.1139D.Steps to One(DP 莫比乌斯反演)
  14. JDBC-Oracle连接教程
  15. Struts2中 Action class not found 问题
  16. 人人网(cookie登录)
  17. git:not a git repository (or any of the parent directories)
  18. php Call to undefined function imagettftext()问题解决
  19. .gitignore总结
  20. opengl渲染管线梳理

热门文章

  1. ASP.NET CMS模板培训教程
  2. OpenCV2:Mat
  3. 关于客户端接口分页sql语句
  4. Visual Studio 2013 Update 3 RTM 正式发布
  5. globalization与全球化
  6. aspx后台传递Json到前台的两种接收方法
  7. HTML相关
  8. es6 中增强的对象字面量
  9. php设置手机访问浏览器版apache配置
  10. 用Kotlin改写PHP程序是什么样的体验