Cocos2d重启当前场景

use*_*659 2 cocos2d-iphone

我已经在游戏中添加了关卡层,每个关卡都有自己的场景.我希望能够重新启动当前场景.显然场景会改变,但图层将保持不变.怎么做 我试过了-

    CCScene *currentScene = [[CCDirector sharedDirector]runningScene];
    [[CCDirector sharedDirector]replaceScene:currentScene];
Run Code Online (Sandbox Code Playgroud)

谢谢

Lea*_*s2D 6

这不起作用,因为您无法用自己替换相同的场景对象:

CCScene *currentScene = [[CCDirector sharedDirector]runningScene];
[[CCDirector sharedDirector]replaceScene:currentScene];
Run Code Online (Sandbox Code Playgroud)

相反,你必须创建一个新的场景实例,如下所示:

[[CCDirector sharedDirector] replaceScene:[YourSceneClass scene]];
Run Code Online (Sandbox Code Playgroud)

如果您不知道当前的场景类是什么,那么这应该工作:

CCScene *currentScene = [CCDirector sharedDirector].runningScene;
CCScene *newScene = [[[currentScene class] alloc] init];
[[CCDirector sharedDirector] replaceScene:newScene];
Run Code Online (Sandbox Code Playgroud)

假设你现在每个人都应该使用ARC.否则添加自动释放.