当前位置:首页 > 操作系统 > Ios

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 
 4publicstaticvoid OpenWebView(string url) { 
 5return; 
 6    } 
 7 8publicstaticvoid SumNum(int v1, int v2) { 
 9        TestUnityEditor.SumNum(v1, v2); 
1011return; 
12    } 
13#elif UNITY_IPHONE 
14     [DllImport ("__Internal")] 
15publicstaticexternvoid OpenWebView(string url); 
16     [DllImport ("__Internal")] 
17publicstaticexternvoid SumNum(int v1, int v2);    
18#elif UNITY_ANDROID 
19     [DllImport ("libtestunity", CallingConvention = CallingConvention.Cdecl)] 
20publicstaticexternvoid OpenWebView(string url); 
21     [DllImport ("libtestunity", CallingConvention = CallingConvention.Cdecl)] 
22publicstaticexternvoid SumNum(int v1, int v2); 
23#endif2425publicstaticvoid SumNumForResult(int v1, int v2, CallbackManager.ResultCallback callback) { 
2627         TestCallbackManager.sumNumCallback.SetResultCallBack(new CallbackManager.ResultCallback(callback)); 
2829        SumNum(v1, v2); 
3031return; 
32    } 
33} 
3435namespace CallbackManager 
36{ 
37publicdelegatevoid ResultCallback(int result); 
3839publicclass SumNumManager{ 
40public SumNumManager() 
41        { 
42        } 
4344private ResultCallback resultCallback; 
4546publicvoid SetResultCallBack(ResultCallback callback) 
47        { 
48             resultCallback = callback; 
49        } 
5051publicvoid SendResult(int result) 
52        { 
53            resultCallback(result); 
54        } 
55    } 
56} 
5758publicclass TestCallbackManager { 
5960publicstatic CallbackManager.SumNumManager sumNumCallback = new CallbackManager.SumNumManager(); 
6162 }

 

转载至:

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

原文:http://www.cnblogs.com/HuangWj/p/5917998.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!