zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    微信退款和支付宝退款接口调用(java版)
    SpringBoot实现JWT认证
    param-validate的使用
    SpringBoot统一参数校验开源项目:param-validate
    AOP+自定义注解实现全局参数校验
    Java自定义注解的实现
    Java初级面试题--持续更新
    React-native run-android fail on :app:processDebugResources解决办法
    【原创】Ionic单页应用跳转外链,构造路由返回的解决办法及代码
    angular 负数遇到货币过滤器,负号会变成括号的解决办法
  • 原文地址:https://www.cnblogs.com/HuangWj/p/5917998.html
Copyright © 2011-2022 走看看