我正在按照本教程尝试运行在 Cocos Builder 中创建的场景(本教程使用详细的“猫跳”项目进行操作,但以同样的方式操作对我来说并不重要)。我使用 cocos2d 2.0 而不是教程中的 2.1 来做这件事,因为在 2.1 版本中,我在CCBReader类中遇到了一些语法错误,而使用 cocos2d 2.0 编译得很好。
我一直按照指南直到“主要事件”段落,并且该应用程序应该可以工作。对于不想遵循指南的人,这是我到目前为止所做的:
- 正确将CCBReader和CCControlExtension文件夹拖到xcode工程中;
- 将 Cocos Builder 项目文件夹中的所有资源拖到 xcode 项目的资源中;
- 创建了一个名为“场景”的组,我在其中拖动了 MainMenuScene.ccbi 文件;
- 用这个替换了推送场景的代码行:
-
[director_ runWithScene: [CCBReader sceneWithNodeGraphFromFile: @"MainMenuScene.ccbi"]];
我什至试过这个:
[director_pushScene: [CCBReader sceneWithNodeGraphFromFile: @"MainMenuScene.ccbi"]];
没有运气。当我运行应用程序时,断言失败:
我找到了问题的主要原因,但我不知道如何解决它。问题是在CCBReader方法中:
+ (CCScene*) sceneWithNodeGraphFromFile:(NSString *)file owner:(id)owner
{
return [CCBReader sceneWithNodeGraphFromFile:file owner:owner parentSize:[[CCDirector sharedDirector] winSize]];
}
此方法返回nil,然后调用另一个方法:
+ (CCScene*) sceneWithNodeGraphFromFile:(NSString *)file owner:(id)owner parentSize:(CGSize)parentSize
{
CCNode* node = [CCBReader nodeGraphFromFile:file owner:owner parentSize:parentSize];
CCScene* scene = [CCScene node];
[scene addChild:node];
return scene;
}
其中node是nil,这会导致断言失败,但我不知道为什么sceneWithNodeGraphFromFile:owner:返回nil,我的项目中有一个名为“MainMenuScene.ccbi”的文件,它也被复制到应用程序包中,所以我看不出这种方法返回nil的理由。如果有人能告诉我如何解决这个问题,或者告诉我一些将 Cocos Builder 场景导入 cocos2d 2.0 项目的替代方法,我将不胜感激。