UNITY3D与iOS交互解决方案

原地址:http://bbs.18183.com/thread-456979-1-1.html

本帖最后由 啊,将进酒 于 2014-2-27 11:17 编辑

“授人以鱼,不如授人以渔”,以UNITY3D调用iOS版的91SDK为例,利用C# / C / OBJ-C 交互原理,本文将详细UNITY3D与iOS之交互的解决方案
 
首先,打开XCODE新建一个空项目,参照91SDK开发文档将91SDK引入并进行环境配置。
配置完毕后创建一个名为“LsSdkConector”的OBJ-C CLASS文件。完毕后,当前项目应如图:
<ignore_js_op>
 
LsSdkConector.h文件我们不用去改动它。保持原样即可。
<ignore_js_op>
 
接下来我们开始在LsSdkConector.m 文件中制作C接口 和 调用91SDK的iOS方法。
引入必要的头文件后,我把该文件的代码分为3个区域。
代码A区域用来定义C接口必须要实现的API。
<ignore_js_op>
 
代码B区域用来实现A区域代码的接口,以及要调用91SDK的iOS方法,直白点说,代码B区域写的方法就是用来调用代码C区域的方法。
<ignore_js_op>
 
代码C区域用来实现真正的91SDK的OBJ-C方法。
<ignore_js_op>
 
大家在自己的项目中:
代码A区域作为可直接复制套用;
代码B区域可编写工具方法和调用iOS的方法;
代码C区域编写91SDK的iOS方法,你需要什么API就写什么,写完了在代码B区域添加C的调用方法即可。
 
在编写代码中,有的人可能会问OBJ-C中有的API有回调,UNITY是如何知道OBJ-C回调结束呢?
答:OBJ-C调用UNITY的API,可以用“UnitySendMessage”的方法 ,具体使用方法 看UINTY的使用帮助。
 
这样我们完成了C接口和91SDK的API代码,接下来我们做UINITY3D方面的代码处理。
我们在UNITY3D项目的ASSETS下新建Code文件夹与Plugins文件夹。
<ignore_js_op>
将LsSdkConector.h 和 LsSdkConector.m 复制到 Plugins 文件夹中,并在 Code文件夹中编写我们的UNITY调用OBJ-C 方法。
新建C#文件“LsSdkConector.cs”,这个文件中,我们将代码分为A、B两区。
 
代码A区编写C语言的接口,这里的接口方法要对应”LsSdkConector.m”中代码区域B的方法名称。
<ignore_js_op>
 
代码B区编写UNITY3D调用OBJ-C的方法,这里的代码注意用来实现UNITY3D之间的方法调用,C#的方法内调用C的方法。
<ignore_js_op>
 
这样,UNITY3D接入91SDK-iOS版的解决方案到此完成。
<ignore_js_op>
 
下面,我们测试一下这个解决方案是否管用。
在Code文件夹中新建 “LisiTest.cs”文件,编辑如下代码:
<ignore_js_op>
并将该C#文件拖至Main Camera 绑定。
 
UNITY3D转iOS项目必须要设置BundleIdentifier,截图:
<ignore_js_op>
 
点击“Build”按钮创建iOS项目,打开该iOS项目,将LsSdkConector.h 和 LsSdkConector.m拖入iOS项目的Classes文件夹中
<ignore_js_op>
 
按照91SDK文档中环境配置章节,对SDK进行引用,添加系统库,做环境配置。
打包到iOS设备前,检查一下iOS项目的配置,注意OBJC要写在第1列,还有要注意大小写。
<ignore_js_op>
<ignore_js_op>
 
选择使用iOS设备打包,你会发现UNITY3D调用iOS 成功了!!
 
本文要告诉大家的是Unity3D与iOS交互的解决方案,代码规范问题不是本文重点,比如91SDK的初始化在SDK文档上推荐是在AppDelegate的文件中进行初始化。
 
附件: <ignore_js_op> 文中提及文件.zip (2.25 KB, 下载次数: 401)



Unity3D与Android之间的交互可以参考我的另一篇文章:《实操UNITY3D接入91SDK安卓版》

 

转载于:https://www.cnblogs.com/123ing/p/3703715.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c:if equal_C ++中的std :: equal()

c:if equalequal()作为STL函数 (equal() as a STL function) Syntax: 句法&#xff1a; bool equal(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2);Where, 哪里&#xff0c; InputIterator1 first iterator to start of the first sequence range I…

《DBNotes:Buffer Pool刷脏页细节以及改进》

本笔记知识沿用之前DBNotes: Buffer Pool对于缓冲页的链表式管理的部分知识 目录获取一个空闲页的源码逻辑Page_Cleaner_ThreadLRU_Manager_ThreadHazard Pointer作为驱逐算法改进参考获取一个空闲页的源码逻辑 任何一个读写请求都需要从Buffer pool来获取所需页面。如果需要的…

WordPress删除数据中标题重复文章的方法

一种是删除重复的方法是&#xff1a;使用插件,大家可以去官网上下载 二种删除重复的方法是&#xff1a;登录数据库&#xff0c;使用sql语句删除&#xff0c;具体的语句为如下代码&#xff1a; CREATE TABLE my_tmp AS SELECT MIN(ID) AS col1 FROM wp_posts GROUP BY post_titl…

hibernate配置

hibernate.cfg.xml <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd&quo…

html中表单元素_HTML中的表单元素

html中表单元素1)<input>元素 (1) The <input> Element) The <input> element is used to get input from the user in an HTML form. <input>元素用于以HTML形式从用户获取输入。 <input> tag is used to get input using input element, the …

《搜索算法——DFS、BFS、回溯》

目录深搜200. 岛屿数量695. 岛屿的最大面积130. 被围绕的区域547. 省份数量417. 太平洋大西洋水流问题回溯广搜111. 二叉树的最小深度752. 打开转盘锁深搜与广搜结合934. 最短的桥深搜 深搜DFS&#xff0c;在搜索到一个新节点时&#xff0c;立即对该新节点进行遍历&#xff0c…

AP in R

AP聚类算法是目前十分火的一种聚类算法&#xff0c;它解决了传统的聚类算法的很多问题。不仅简单&#xff0c;而且聚类效果还不错。这里&#xff0c;把前两天学习的AP算法在R语言上面的模拟&#xff0c;将个人笔记拿出来与大家分享一下&#xff0c;不谈AP算法的原理&#xff0c…

nginx 模块解析

nginx的模块非常之多&#xff0c;可以认为所有代码都是以模块的形式组织&#xff0c;这包括核心模块和功能模块&#xff0c;针对不同的应用场合&#xff0c;并非所有的功能模块都要被用到&#xff0c;附录A给出的是默认configure&#xff08;即简单的http服务器应用&#xff09…

python关键字和保留字_Python关键字

python关键字和保留字关键词 (Keywords) Keywords are the reserved words in Python programming language (and, any other programming languages like C, C, Java, etc) whose meanings are defined and we cannot change their meanings. In python programming languages…

《LeetcodeHot100非困难题补录》

最近比较闲&#xff0c;也比较焦虑&#xff0c;刷刷题吧 目录11. 盛最多水的容器22. 括号生成31. 下一个排列48. 旋转图像49. 字母异位词分组56. 合并区间75. 颜色分类79. 单词搜索114. 二叉树展开为链表141. 环形链表148. 排序链表152. 乘积最大子数组169. 多数元素207. 课程表…

Java里String.split需要注意的用法

我们常常用String的split()方法去分割字符串&#xff0c;有两个地方值得注意&#xff1a; 1. 当分隔符是句号时(".")&#xff0c;需要转义&#xff1a; 由于String.split是基于正则表达式来分割字符串&#xff0c;而句号在正则表达式里表示任意字符。 //Wrong: //Str…

C# Socket 例子(控制台程序)

服务器代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.IO;namespace TCPListener {class Program{static void Main(string[] args){const int BufferSize 1024;Con…

Scala中的值类

Value classes are a special mechanism in Scala that is used to help the compiler to avoid allocating run time objects. 值类是Scala中的一种特殊机制&#xff0c;用于帮助编译器避免分配运行时对象。 This is done by defining a subclass of AnyVal. The only parame…

《MySQL8.0.22:Lock(锁)知识总结以及源码分析》

目录1、关于锁的一些零碎知识&#xff0c;需要熟知事务加锁方式&#xff1a;Innodb事务隔离MVCC多版本并发控制常用语句 与 锁的关系意向锁行级锁2、锁的内存结构以及一些解释3、InnoDB的锁代码实现锁系统结构lock_sys_tlock_t 、lock_rec_t 、lock_table_tbitmap锁的基本模式的…

关于ORA-04021解决办法(timeout occurred while waiting to lock object)

某个应用正在锁定该表或者包 表为 select b.SID,b.SERIAL#,c.SQL_TEXT from v$locked_object a, v$session b, v$sqlarea c where a.SESSION_ID b.SID and b.SQL_ADDRESS c.ADDRESS and c.sql_text like %table_name% 包为 select B.SID,b.USERNAME,b.MACHINE FROM V$ACCESS …

HtmlAutoTestFrameWork

前段时间做的自动化测试的是Silverlight的&#xff0c;框架都已经搭好。突然测试发现这里还有一个要发送邮件的html页面&#xff0c;并且将另外启动浏览器&#xff0c;于是今天下午把这个html的也写出来。用法 &#xff1a; HtmlAutoTestFrameWork htf new HtmlAutoTestFrameW…

L8ER的完整形式是什么?

L8ER&#xff1a;稍后 (L8ER: Later) L8ER is an abbreviation of "Later". L8ER是“ Later”的缩写 。 It is an expression, which is commonly used in messaging or chatting on social media networking sites like Facebook, Yahoo Messenger, and Gmail, etc…

Randomize select algorithm 随机选择算法

从一个序列里面选择第k大的数在没有学习算法导论之前我想最通用的想法是给这个数组排序&#xff0c;然后按照排序结果返回第k大的数值。如果使用排序方法来做的话时间复杂度肯定至少为O&#xff08;nlgn&#xff09;。 问题是从序列中选择第k大的数完全没有必要来排序&#xff…

《Linux杂记:一》

目录CPU负载和CPU利用率CPU负载很高,利用率却很低的情况负载很低,利用率却很高常用linux命令常用的文件、目录命令常用的权限命令常用的压缩命令CPU负载和CPU利用率 可以通过 uptime , w 或者 top 命令看到CPU的平均负载。 Load Average :负载的3个数字,比如上图的0.57、0.4…

IOS Plist操作

代码&#xff1a;copy BUNDLE下的plist文件 到 library下面。 bundle下不支持些&#xff0c;library&#xff0c;doc路径支持读与写。 (void)copyUserpigListToLibrary {NSFileManager *fileManager [NSFileManager defaultManager];NSArray *paths NSSearchPathForDirector…