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

Unity在Android和iOS中如何调用Native API的更多相关文章

  1. Android 和iOS 中关于View 的一点知识

    View的概念和方法十分重要,这里将对Android 和iOS中出现的,关于视图的一些知识点进行总结,预计文章会比较长,要许多时间慢慢补充. 先转载一部分资料,感谢原作者! 原链接为:http://b ...

  2. Android 和iOS中 Gesture 和 Touch

    先谈谈在开发中遇到的手势问题: 今天在开发android程序时,在 View.OnTouchListener 的 onTouch(View view, MotionEvent motionEvent) ...

  3. 直播软件开发关于Android、iOS中的视频采集步骤

    很多人对直播软件开发还是抱有想法的,但是在这个资本冷静的市场下,直播平台该怎么玩,在直播软件开发过程中哪些功能是必须具备的,这都是值得关注的话题.今天我们给大家分享一份详细的直播软件开发关于Andro ...

  4. Android和iOS中Cocos2D日志为什么会出现skip frames

    在你运行app在Android或iOS设备或iOS模拟器中时,日志里往往会出现一行: I/Choreographer(28956): Skipped 159 frames! The applicati ...

  5. 在Android和iOS中集成flutter

    flutter可能是未来跨平台开发的又一技术框架,那么对于一个app,我们不可能完全用flutter来开发,那么就意味着我们需要在已有的Android和iOS代码中去集成flutter.目前这一技术还 ...

  6. Java 代码中如何调用 第三方Api

    在代码中调用第三方API 获取数据 package com.example.demo.utils; import com.alibaba.fastjson.JSONObject; import lom ...

  7. Unity获取Android和iOS手机系统电量及网络状况

    最开始考虑使用中间静态链接库来调用手机系统自带的API,但是在研究的过程中发现Android系统将电量等信息记录在了固定的文件中,所以只需要在C#中直接读取就可以而不需要中间库. a.Android版 ...

  8. Android和iOS中Cocos2dx的横屏竖屏设置

    一.横屏.竖屏设置 1.android AndroidManifest.xml文件中, screenOrientation="landscape" 为横屏, screenOrien ...

  9. Android 和iOS中 View的滚动

    在最近的程序中用到了Android中的View的滚动,记录一下,待总结.

随机推荐

  1. vue-lazy-render: 延迟渲染大组件,增强页面切换流畅度

    最近用element来做项目,在开发的过程中,突然发现页面的操作和切换在数据量大的时候相当卡,后来提了个issue,在furybean解答后才知道,我每个单元格都加了tooltip,会生成大量的节点, ...

  2. 自己封装的一个JS分享组件

    因为工作的需求之前也封装过一个JS分享插件,集成了我们公司常用的几个分享平台. 但是总感觉之前的结构上很不理想,样式,行为揉成一起,心里想的做的完美,实际上总是很多的偏差,所以这次我对其进行了改版. ...

  3. 积累一下SQL

    开篇先自我检讨一下,写了博客几年以来首次试过连续两个月没出过博文,有客观也有主观原因,但是最近这年里博文数量也越来越少,博文的质量也每况日下.希望自己一直能坚持下来,多写写博文,这月尽量多写几篇来弥补 ...

  4. jQuery省市区三级联动插件

    体验效果:http://hovertree.com/texiao/bootstrap/4/支持PC和手机移动端. 手机扫描二维码体验效果: 代码如下: <!DOCTYPE html> &l ...

  5. HTML5播放暂停音乐

    查看效果:http://hovertree.com/code/jquery/ueyf7gn4.htm 代码如下: <!DOCTYPE html> <html> <head ...

  6. ASP.NET MVC Notes - 01

    inetmgr 进入IIS ViewBag和ViewData在run-time的时候检查错误,View中的用法如下: @*ViewBag传递的是动态对象*@ @foreach (string item ...

  7. js中XMLHttpRequest对象实现GET、POST异步传输

    js中XMLHttpRequest对象实现GET.POST异步传输 /* * 统一XHR接口 */ function createXHR() { // IE7+,Firefox, Opera, Chr ...

  8. win10平台mysql5.6.34免安装版(绿色版zip)的配置以及密码和编码设置

    平台:win10 X64 mysql: mysql-5.6.34-winx64.zip 以下所写都是本人测试过的,力争无误.上次发布了,可是发现了一些问题,特地查了一下官方文档(我会说我是用有道词典翻 ...

  9. php实现设计模式之 适配器模式

    <?php /* * 适配器模式:将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原来由于接口不兼容而不能一起工作的那些类可以一起工作(结构型模式) * * 一个源接口,不符合 ...

  10. 从零开始学 Java - 数据库连接池的选择 Druid

    我先说说数据库连接 数据库大家都不陌生,从名字就能看出来它是「存放数据的仓库」,那我们怎么去「仓库」取东西呢?当然需要钥匙啦!这就是我们的数据库用户名.密码了,然后我们就可以打开门去任意的存取东西了. ...