xcode项目中引入cocos2dx,需要先导入cocos2d_libs静态库。
1、把cocos2dx项目(cocos2dx在Mac上开发环境配置及新建工)中如下图所示资源拷贝到xcode工程根目录下
2、在xcode工程中导入cocos2d_libs.xcodeproj
注意optiens选择如下
3、在项目中配置中选择targets,在Build Phases中添加Target Dependencies和Link Binary With Libraries
4、PROJECT中设置Header Search Paths,相对路径,因为我把cocos2d文件夹放在MyCocos.xcodeproj的同级目录,所以是这个路径。$(SRCROOT)是.xcodeproj所在位置
$(inherited) $(SRCROOT)/cocos2d $(SRCROOT)/cocos2d/cocos $(SRCROOT)/cocos2d/cocos/base $(SRCROOT)/cocos2d/cocos/physics $(SRCROOT)/cocos2d/cocos/math $(SRCROOT)/2d $(SRCROOT)/cocos2d/cocos/ui $(SRCROOT)/audio/include $(SRCROOT)/cocos2d/extensions $(SRCROOT)/cocos2d/external $(SRCROOT)/cocos2d/external/chipmunk/include/chipmunk $(SRCROOT)/cocos2d/cocos/editor-support
5、设置TARGETS中Header Search Paths,这里设置同第4步
6、设置预处理的宏定义,Debug和Release,这里是以Iphone版本
USE_FILE32API CC_TARGET_OS_IPHONE COCOS2D_DEBUG=1 CC_ENABLE_CHIPMUNK_INTEGRATION=1
USE_FILE32API CC_TARGET_OS_IPHONE CC_ENABLE_CHIPMUNK_INTEGRATION=1
7、C / C++编译器的选择,这个与原本项目有关。
8、关闭BitCode
上面完成之后,就可以尝试Build了,如果运气好的话,基本就可以成功了。
9、导入Classes和Resource
如果直接导入Classes文件和Resource,运行异常如下
检测导入后Complie Souces
10、导入cocos2dx项目 proj.ios_mac->ios下的几个文件
11、修改AppDelegate名称,否则与cocos::AppDelegate冲突
12、在ViewController.cpp中开启游戏
#import "ViewController.h"
#import "GAppDelegate.h"
#import "RootViewController.h"
#include "cocos2d.h"
@interface ViewController ()
{
RootViewController *viewController ;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view,typically from a nib.
UIButton * bt = [[UIButton alloc] initWithFrame:CGRectMake(100,100)];
bt.backgroundColor = [UIColor brownColor];
[bt addTarget:self action:@selector(bt:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:bt];
}
//初始化
- (void)initGame {
cocos2d::Application *app = cocos2d::Application::getInstance();
// Initialize the GLView attributes
app->initGLContextAttrs();
cocos2d::GLViewImpl::convertAttrs();
}
//开启游戏
- (void)startGame {
cocos2d::GLView *glview = cocos2d::GLViewImpl::createWithEAGLView((__bridge void *)viewController.view);
cocos2d::Director::getInstance()->setOpenGLView(glview);
//run the cocos2d-x game scene
cocos2d::Application::getInstance()->run();
}
- (void)bt:(UIButton*)bt {
[self initGame];
// Override point for customization after application launch.
// Use RootViewController to manage CCEAGLView
viewController = [[RootViewController alloc]init];
// viewController.wantsFullScreenLayout = YES;
((GAppDelegate *)[[UIApplication sharedApplication] delegate]).root = viewController;
// [[UIApplication sharedApplication] setStatusBarHidden:true];
[self presentViewController:viewController animated:YES completion:^{
// IMPORTANT: Setting the GLView should be done after creating the RootViewController
[self startGame];
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
13.使用经过编译后的libcocos2d IOS.a,避免每次运行都要编译。(Cocos2d-x在xcode下开发生成静态库添加到项目)