你的位置:首页 > ASP.net教程

[ASP.net教程]Unity在Android和iOS中如何调用Native API


本文主要是对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 接口的引用声明是不一样的。本例对应的接口声明如下:

 1 public class CallNativeAPI {  2    3 #if UNITY_EDITOR  4   public static void OpenWebView(string url) {  5     return;  6   }  7    8   public static void SumNum(int v1, int v2) {  9     TestUnityEditor.SumNum(v1, v2); 10     11     return; 12   } 13 #elif UNITY_IPHONE 14   [DllImport ("__Internal")] 15   public static extern void OpenWebView(string url); 16   [DllImport ("__Internal")] 17   public static extern void SumNum(int v1, int v2);  18 #elif UNITY_ANDROID 19   [DllImport ("libtestunity", CallingConvention = CallingConvention.Cdecl)] 20   public static extern void OpenWebView(string url); 21   [DllImport ("libtestunity", CallingConvention = CallingConvention.Cdecl)] 22   public static extern void SumNum(int v1, int v2); 23 #endif  24   25   public static void SumNumForResult(int v1, int v2, CallbackManager.ResultCallback callback) { 26     27     TestCallbackManager.sumNumCallback.SetResultCallBack(new CallbackManager.ResultCallback(callback)); 28 29     SumNum(v1, v2); 30 31     return; 32   } 33 } 34 35 namespace CallbackManager 36 { 37   public delegate void ResultCallback(int result); 38   39   public class SumNumManager{ 40     public SumNumManager() 41     { 42     } 43     44     private ResultCallback resultCallback; 45 46     public void SetResultCallBack(ResultCallback callback) 47     { 48       resultCallback = callback; 49     } 50       51     public void SendResult(int result) 52     { 53       resultCallback(result); 54     } 55   } 56 } 57 58 public class TestCallbackManager { 59 60   public static CallbackManager.SumNumManager sumNumCallback = new CallbackManager.SumNumManager(); 61   62 }

 

转载至:

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




深圳到日本旅游深圳去日本旅游报价办理日本旅游签证跟团日本旅游需要多少钱几月份去日本旅游最好梅州客天下元旦门票多少钱?2015梅州客天下元旦门票价格? 2015-2015达古冰山冰雪旅游节时间什么时候?_有什么好玩的? 2015梅州客天下元旦有什么活动?梅州客天下元旦活动介绍? 元旦去哪儿 广西最适合短期出游的旅行地 雷公峡漂流预定?惠州雷公峡漂流定票电话? 博罗象头山雷公峡漂流价格?象头山雷公峡漂流到什么时候? 惠州雷公峡漂流票在哪买便宜?雷公峡漂流网上预订? 惠州博罗雷公峡漂流怎么去?博罗雷公峡漂流交通路线? 汕头礐石风景名胜区简介?礐石风景区游记? 汕头礐石风景区路线图?礐石风景区直通车怎么走? 汕头礐石风景区好玩吗?礐石风景区好不好玩? 2015云浮蟠龙洞门票怎么预订?云浮蟠龙洞风景区订票? 锦母角在哪_锦母角在哪里_锦母角怎么去 成都西岭雪山滑雪场延长免门票时间至11月30日 南田温泉门票_珠江南田温泉门票价格_三亚南田温泉门票多少钱 2012—2013成都直飞国家_成都直飞热门出境旅游目的地盘点 M04-0805QYC Datasheet M04-0805QYC Datasheet M04-0805SRC-P Datasheet M04-0805SRC-P Datasheet M04-0805T2GC Datasheet M04-0805T2GC Datasheet 凤凰古城在哪里 凤凰古城在哪里 凤凰古城在哪里 雁门关在哪 雁门关在哪 雁门关在哪 悉尼是哪个国家的 悉尼是哪个国家的 悉尼是哪个国家的