Unity3D与iOS交互1(Unity里调用iOS原生)

此篇文章基于Unity version 5.3.6p6 与Xcode7.3。

在项目开发过程中,因为Unity3D打包之后默认都是只能用真机运行。其实Unity3D打包的项目也是可以用模拟器运行的,只是需要改下配置。

一、Unity3D打包后iOS如何使用模拟器 

(如果真机运行,不需要模拟器忽略此处,直切跳转到二。暂时没有研究如何打包后同时使用真机和模拟器, 可以分开打包)

具体步骤如下:

1.打开Unity3D项目,点击菜单栏File选项,然后点击Build Settings (快捷键Command+Shift+B),点击Player Settings进入配置界面,如图


找到最下面Other Settings设置里面的Target SDK (不同的Unity3D版本可能不同,有的是SDK Verson)。这里默认的是Device SDK,既真机状态。我们想要在模拟器下,此处选择Simulator SDK。然后就可以打包了。(注:选项Target Device 可以选择我们需要运行的设备,默认是iPhone+iPad)


2.打包成功以后,打开Unity-iPhone.xcodeproj。查看工程状态。我的工程是可以直接运行各个模拟器了。有的时候会出现如图现象,不要着急

进入工程设置Build Settings 设置界面,在Architectures目录下,找到Supported Platforms,选择iOS,这时候在工程里面就可以选择各个模拟器运行了。(这里可以选择你支持的各个平台类型)

二.Unity3D与iOS交互~~简单的传值

 Unity3D和iOS交互核心步骤如下:

             1.新建一个Unity3D项目;

            2.新建一个iOS项目,新建一个ViewController.m,ViewController.m .h文件并导入Unity3D原始项目的Plugins文件加下(Plugins具体作用,下面会详细解说),用于与Unity3D交互;

             3.打包成Xcode项目,运行测试。

1.新建一个Unity3D项目并打开。

2.新建一个iOS项目打开,创建继承于UIViewController的文件,这里我命名为UnityToIOSString。(我们也可以创建继承于NSObject)

3.在Unity3D项目的Assets文件夹下创建一个Plugins文件夹,再创建一个UnityToIOS文件夹,专门用来放原生代码文件。把UnityToIOSString文件复制到UnityToIOS文件夹中。(注:Plugins文件夹用来放native插件。它们会被自动包含进build中去。注意这个文件夹只能是Assets文件夹的直接子目录。)

4.打包成Xcode项目,接下来就是最关键的地方~~撸代码!!!!!!

1.带参数无返回值

第一步:在Xcode项目中找到我们导入的UnityToIOSString文件。编写交互函数,用来unity调取。

在Unity C#中都是用调用C语言函数,而我们在Xcode中编写代码,所以我们要加上标准C编写的Dll函数。如上图(别忘了在.h文件中写函数)。

第二步:在Unity中创建一个封装类UnityToIOS,引入在Xcode中定义的方法,方法名必须与Xcode一样。

要引入头文件usingSystem.Runtime.InteropServices;  为了[DllImport("__Internal")]。在声明实现方法的时候要加上修饰符extern,专门给外部调用的修饰符,与DllImport属性一起使用,该方法前面必须声明static。

第三步:在Unity中创建一个事件文本ButtonIOSTest,创建UI事件,调用封装方法。

保存后,基本上就完事了。但是这里面有2个小坑。1.我们在Unity中编写的代码并没有在我们导出的Xcode项目中,要重新生成Xcode项目。2.我们在第一步写的代码并没有在Unity中,我们要手动的把代码复制会Unity中的UnityToIOSString中(暂时我没有找到好的方法。如果谁有可以告诉我一声)。完成这2点之后,我们就要重新Build生成Xcode项目,这里我们最好是Append而不要用Relpace。好了,运行Xcode看效果吧。

2.带参数有返回值 -- 原理是一样的,上图。(注:有返回值的时候,因为考虑到内存管理机制的问题,在回调的时候哦要加char *MakeStringCopy (const char *string)方法)

PS: 还有无参数无返回值,无参数有返回两种函数,原理一样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容