unity2019.4集成iOS-库形式

最近需要在原生项目集成unity导出的工程,并作为子模块存在,网上教程不少,大多数都尝试了一遍,但都不能用,最终,还是总结出一套最为简单、快速、有效的方法。

内容大部分转载出自 <简书--小蜗牛吱呀之悠悠 >,因为版本不同,自己做了一些部分调整

一、背景

unity导出的工程,不仅可以以APP的形式独立上线,同时也可以将其囊括成framework的形式,集成进入我们已有的原生工程中,下面个将介绍已有原生上线项目,如何集成unity。

unity的集成有三种方式:

1、直接拖拽导入

这种方式网上资料很多,但我尝试后都失败了,也许与我这边使用的unity版本有关,此处不再赘述

2、将unity作为一个target导入,并建立关联

此方法也资料很多,仍然没有成功

上述两种方法我这边都失败了,目前初步猜测是与使用的unity版本有关,如有大神知道原因,欢迎留言~

3、将unity囊括成framework,并将unity的内容作为子项目导入到原生的workspace中,并建立两者之间的关联。

二、准备工作

1、确认当前使用的unity版本是否高于2019.3.a2,如果低于此版本,本文将不适用,建议使用上述方式1、2。Xcode版本需要大于9.4,作者使用的是11.5版本。

2、unity导出环境配置

a.  首先在Unity编辑器打开UnityProject项目,选择Menu -> Window -> Package Manager,因为2.0.8版本不兼容使用Unity作为库,所以要移除Ads资源包,或更新Ads资源包到v 3.*版本。

b.  配置Bundle Identification和Signing Team ID,此步骤非必须,可以在导出后再配置,但作者是统一配置的,所以也一并提一下。

选择Menu -> Edit -> Player Settings -> Player -> iOS设置标签页 -> Identification Section

c.导出unity项目时,要注意区分是否支持模拟器,此处特别重要,如果弄错了,将导致后续集成失败,如果你的原生工程是真机调试,那直接导出真机的工程即可。

正确导出unity工程后,就可以开始进行集成了

三、集成

集成分为两个步骤:workspace配置  、代码配置

如果你的原生项目使用的是cocopods,直接跳过此1.1步骤,从1.2开始。

1.1workspace配置

此步骤为没有使用cocopods的项目集成用,将原生工程和unity导出的工程放在同一个文件夹中,如下图


新建workspace

此时,关闭原生工程,打开新建的workspace,点击Xcode左下角的"+"号,将原生工程、unity导出的工程添加进来


导入workspace

导入完成后,请从步骤2继续集成

1.2原生项目有使用cocopods

将unity导出的工程拷贝到原生工程文件夹中,得到如下图结构


拷贝unity工程

打开workspace,点击Xcode左下角的"+"号,将unity导出的工程添加进来


导入unity

2.将unity工程集成为UnityFramework.framework

a.展开unity原生工程,在products文件夹下找到UnityFramework.framework,右击show in finder


UnityFramework.framework路径

b.在workspace中选中nativeiOS工程文件,点击下图的“+”号


点击加号


添加其他

此操作比较关键,很多人找不到UnityFramework.framework。打开刚才UnityFramework.framework的路径文件夹,直接将文件夹拖拽进刚才的路径查找器中


拖进去

添加完成以后,注意检查一下下图项


此时,你的原生空间下的Frameworks下将会出现UnityFramework.framework,且带有展开箭头,否则就是错误的


不是红色文字,就正确

3.配置UnityFramework.framework和桥接文件

a.选中unity工程Data文件夹,按下图配置


b.选中unity工程下的NativeCallProxy.h文件,按下图配置,注意,需要public

好多同学说NativeCallProxy.h文件找不到,这里特别说明一下:这个文件是需要在导出unity工程之前,将NativeCallProxy.h文件导入,然后再导出unity工程;并且这个文件是不可以在unity工程导出后添加的,因为unity导出过程,会建立NativeCallProxy.h与unity工程的关联,后期添加则没有这个关联,编译不通过

c.build一下UnityFramework.framework,这一步一定要,否则容易出现文件找不到的问题


unity项目 - /MainApp/main.mm进行调用,指向Data文件夹所处的新位置。

[ufw setDataBundleId: "com.unity3d.framework"];



原生项目删除文件

删除AppDelegate.h  

AppDelegate.m 改成 AppDelegate.mm

删除Main.m

删除ViewController.h ViewController.m

删除SceneDelegate.h. SceneDelegate.m

删除main.Storyboard

报错1: There is no scene delegate set. A scene delegate class must be specified to use a main storyboard file.

报错2:[Storyboard] Unknown class ViewController in Interface Builder file.

 ---因为删掉了自动生成的ViewController.h/m文件,使用了自己创建的viewController,但是在main.storyboard中有用到系统生成的ViewController.h/m文件,解决方法删掉main.storyboard,删掉info.plist文件中main storybiard file base name。

报错3:Could not find a storyboard named 'Main' in bundle NSBundle

处理办法:

1. 检查Info.plist. 删除整个Application Scene Manifest,

2.删除Info.plist中的SceneMainSet删除

3.新建main.Storyboard,并设置默认;

4. 如果报错 重启xcode

5. 如果需要-原生项目 添加相机权限Info.plist-      Privacy - Camera Usage Description

原生项目-打开仅剩下的代码文件AppDelegate.mm文件,添加以下代码

链接: https://pan.baidu.com/s/1uozhy529T4tl0a2ZmUK2cg 密码: 9c8i

主要转载参考https://www.jianshu.com/p/f919cb90821e

参考https://www.jianshu.com/p/d1f1b1b68784

参考https://www.jianshu.com/p/b97f9d152d6b


本篇文章是介绍集成的,启动后需要展示unity页面请参考下一篇《iOS原生融合unity—framework形式集成(二)》地址:https://www.jianshu.com/p/dfd35f2a6af2

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

推荐阅读更多精彩内容