程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Unity在Android和iOS中如何調用Native API,androidios

Unity在Android和iOS中如何調用Native API,androidios

編輯:關於.NET

Unity在Android和iOS中如何調用Native API,androidios


本文主要是對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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved