尝试做这样的事情。当您在 uiviewcontroller 上推送 cocos 场景时,请在 ViewDidLoad 方法中添加此代码。
-(void)viewDidLoad{
[super viewDidLoad];
CCDirector *director = [CCDirector sharedDirector];
if([director isViewLoaded] == NO)
{
CCGLView *glView = [CCGLView viewWithFrame:[[[UIApplication sharedApplication] keyWindow] bounds]
pixelFormat:kEAGLColorFormatRGB565
depthFormat:0
preserveBackbuffer:NO
sharegroup:nil
multiSampling:NO
numberOfSamples:0];
director.view = glView;
[director setAnimationInterval:1.0f/60.0f];
[director enableRetinaDisplay:YES];
}
director.delegate = self;
[self addChildViewController:director];
[self.view addSubview:director.view];
[director didMoveToParentViewController:self];
if(director.runningScene)
{
[director replaceScene:[SceneFirst scene]];
}
else
{
[director runWithScene:[SceneFirst scene]];
}
}
这里 SceneFirst 是你想要推送的 cocos 场景。只需在你的 UiViewController 中添加 CCDirectorDelegate 作为委托。并在您的 ViewDidUnload 方法中添加这行代码
[[CCDirector sharedDirector] setDelegate:nil];
要弹回您的 Uikit 视图,请在点击的任何 CCmenu 上调用此代码
[[CCDirector sharedDirector] stopAnimation];
AppDelegate *app = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[app.navigationController popViewControllerAnimated:YES];
希望这有帮助!!:)