您的位置:首页 > 移动开发 > Unity3D

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

2017-01-12 13:02 447 查看
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



<
db25
/span>

$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.[b]framework[/b]



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity ios