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];这句话加上 设置为主窗口即可
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];这句话加上 设置为主窗口即可
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 云巴 2016 年更新合集——SDK 篇
- 第三方推送已死
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- 浅析iOS应用开发中线程间的通信与线程安全问题