unity导出ios工程导入到另一个工程中

本文提供了一个详细的步骤说明,教你如何将Unity项目成功集成到iOS应用中。从设置bundle ID、禁用bitCode到添加必要的frameworks及配置Xcode项目等,涵盖了所有关键步骤。此外,还列举了集成过程中可能遇到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

demo下载地址:https://pan.baidu.com/s/1hs9Mjha


1.unity导出文件时,设置bundle id 与项目的bundle id一致 unity:(file-->building setting-->playerSetting-->otherSettings)


2.Xcode中bitCode设置为NO


3.Classes,Libraries,MapFileParser.sh拖入到项目(选中Copy items if needed, 选中Create groups),Data拖入到项目(选中Copy items if needed, 选中Create folder references)


4.添加framework


5.添加Header Search Path


   $SRCROOT/ios

   $SRCROOT/ios/Classes

   $SRCROOT/ios/Classes/Native

   $SRCROOT/ios/Libraries

   $SRCROOT/ios/Libraries/libil2cpp/include

(注:ios之前是路径 自行更改自己文件夹的路径)

6.添加Library Search Paths


   $(inherited)

   $(PROJECT_DIR)

   $(SRCROOT)/ios/Libraries/Plugins/iOS

   $(PROJECT_DIR)/Libraries

7.other C Flags -> -DINIT_SCRIPTING_BACKEND=1


8.添加User-Defined (UNITY_RUNTIME_VERSION版本号与导出工程的Unity版本号一致)


9.新建pch文件  将Prefix.pch文件内容复制到新建的pch文件中并设置pch文件路径 删除原有的pch文件


10.Classes/main.mm全部内容复制到main.m 并把扩展名改为.mm, 修改如下代码


   return UIApplicationMain(argc, argv,nil,NSStringFromClass([AppDelegate class]));

11.添加Run Script


$SRCROOT/ios/MapFileParser.sh(MapFileParser.sh之前的为你到这个文件的路径)

12.AppDelegate添加代码


@property (strong,nonatomic)UIWindow *window;

@property (strong,nonatomic)UIWindow *unityWindow;

@property (strong,nonatomic)UnityAppController * unityAppController;


-(void)showUnity;

-(void)hideUnity;


13.UnityAppController修改代码


return (UnityAppController*)[[UIApplicationsharedApplication]valueForKeyPath:@"delegate.unityAppController"];(unityAppController是你在AppDelegate中给UnityAppController对象的名字)


14.修改AppDelegate代码




注:可以先给UnityAppController中调用StartUnity方法的地方注释掉  需要打开unity时  调用startUnity方法,但是startUnity方法只能调用一次 否则crash(若想在项目中反复打开关闭unity,startUnity方法调用一次,不显示unity界面时给它hidden设置成YES,显示unity界面时给它hidden设置成NO)





内容来自:http://blog.youkuaiyun.com/dylan_lwb_/article/details/51452470

在集成过程中可能遇到的问题


1.Unknown type name 'UnityViewControllerBase'

UnityViewControllerBase报错, 把它改成UIViewController



2. Unknown type name 'AppDelegate'

在新建的项目里边不会报错, 但是我集成到公司项目的时候报这个错, 于是改成如下代码, 目前没有出现问题, 如果有人知道原因, 请在评论区告诉我



3. Undefined symbols for architecture armv7

遇到这个错的同学请添加AssetsLibrary.framework和Accelerate.framework




4.编译时遇到Permission denied错误的是因为当前开发账号对项目目录没有权限执行MapFileParser.sh

解决办法: 在终端执行命令 sudo chmod -R 777 所在的目录


5. Functions that differ only in their return type cannot be overloaded

解决办法: 把Enable Strict Checking of objc_msgSend Calls 改为NO


6. Control reaches end of non-void function

解决办法: 把Mismatched Return Type 改为NO






遇到的问题

1.调用startUnity方法会给系统的状态栏隐藏  若不想隐藏 将UnityViewControllerBaseiOS.mm文件中prefersStatusBarHidden改为false


2.unity按钮点击事件不好用,将[UnityGetMainWindow() makeKeyAndVisible];这句话加上 设置为主窗口即可







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_Home

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值