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

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.csdn.net/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];这句话加上 设置为主窗口即可







猜你喜欢

转载自blog.csdn.net/qq_30737525/article/details/54376946