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安卓版》

 

UNITY3D与iOS交互解决方案,布布扣,bubuko.com

时间: 2024-10-22 02:36:35

UNITY3D与iOS交互解决方案的相关文章

Unity3d与iOS交互开发——接入平台SDK必备技能

原地址:http://www.2cto.com/kf/201401/273337.html# 前言废话:开发手机游戏都知道,你要接入各种平台的SDK.那就需要Unity3d与iOS中Objective-C的函数有交互,所以你就需要用到如下内容: 一.Unity3d To iOS: 1.创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class SdkToIOS: Mo

Unity3d与iOS交互开发

一.Unity3d  To  iOS: 最近要做一个商品和人体模型T台秀相关的功能,要用到Unity3D,搜集了一些资料先保存下来. 1.创建一个C#文件 SdkToIOS.cs 这是调用iOS函数的接口: [csharp] view plain copy print? public class SdkToIOS: MonoBehaviour { //平台接入开关 public static bool isOpenPlatform = false; //导入定义到.m文件中的C函数 [DllIm

Unity3D与iOS的交互设计&lt;ViewController 的跳转&gt;

原地址:http://www.aichengxu.com/article/%CF%B5%CD%B3%D3%C5%BB%AF/28797_12.html Unity3D与iOS的交互设计<ViewController 的跳转>,有需要的朋友可以参考下. 这也是第一次做这样的需求,也是公司的需要呀.做出这个真是一言难尽呀... 小弟主要不是搞iOS开发的,一直以来都是开发Android开发,只是昨天被老大叫过去做一下iOS的二维码扫描.有点iOS基础的我,只好到处搜索了.然后,二维码扫描做好了,遇

unity3d ios 交互

写这篇博文之前,我也为之忙活了半天,对于那些不熟悉oc的童鞋来说,非常有用,这里主要会讲到常用的通信机制.和一些关于IOS的代码讲解. 一下主要讲解使用unity3d调用IOS的界面浏览一张图片. 1.unity3d 与 IOS 的基本通信机制. 在C#脚本中,定义一个类,里面写入类似这样的 public static class PlatformNative{ [DllImport("__Internal")] private static extern void extern_lo

unity3d与Object-C交互

(1)unity3d 中如何调用IOS的Api 1.在C# 脚本中使用 (1) 需要导入文件 using System.Runtime.InteropServices; (2) [System.Runtime.InteropServices.DllImport("__Internal")]     extern static public int AwesomeFunction(int awesomeParameter); 2.在unity导出的xcode工程中的C/C++/objec

Unity3D与JAVA交互

Unity for IOS: 打包是将XCODE工程直接交给开发者,开发者可以在工程的基础上继续添加新的视图,最后由开发者自行打包生成IPA包,发布程序. Unity for Android:打包直接生成APK包,等于说源代码开发者是看不到的,但是Unity的自身确实有些局限,针对Android平台我们需要学习如何在Unity中调用Android的JAVA代码. 本章我们的目标:使用Unity的脚本打开Activity. (1) 我们创建一个普通的Android工程,目录结构如下图所示: 因为项

Unity3D for iOS初级教程:Part 2/3

转自:http://www.cnblogs.com/alongu3d/archive/2013/06/01/3111736.html 这篇教材是来自教程团队成员 Christine Abernathy, 他是Facebook的开发支持团队的工程师.欢迎来到Unity3D for iOS系列教程的第二部分!在这个系列的第一部分中,你已经学习了Unity的一些基本技能来构建一个非常简单的项目,并把它部署到iOS设备上.在继续这篇教程之前,你要确认已阅读过第一部分.现在进入第二部分,你要添加一些功能来

U3D实现与iOS交互

原地址:http://502317120.blog.51cto.com/4062300/1077733 在开发中有很多情况下会用到U3D调用iOS中的函数. 例如在U3D中,我们需要调用到一个iOS 的函数,例如:广告插件.(都有现成的代码大家只需要调用下的那种.) 这个时候我们就需要在U3D中写一个方法.这个方法去调用iOS中的函数. U3D中写法如下: C#版: [DllImport("__Internal")] private static extern void _UseIOS

iOS问题#解决方案#之关于“application/x-www-form-urlencoded;charset=utf-8” not supported

http://www.cnblogs.com/ChenYilong http://www.cnblogs.com/ChenYilong 如果你用的是AFN/ASI,那得修改源代码了,因为AFN/ASI默认不支持"application/x-www-form-urlencoded;charset=utf-8"这种内容类型那你去ASI源码里面搜索Content type,看能不能改东西再不行,那就是你们服务器人员的问题了 http://www.cnblogs.com/ChenYilong