0

我正在按照本教程尝试运行在 Cocos Builder 中创建的场景(本教程使用详细的“猫跳”项目进行操作,但以同样的方式操作对我来说并不重要)。我使用 cocos2d 2.0 而不是教程中的 2.1 来做这件事,因为在 2.1 版本中,我在CCBReader类中遇到了一些语法错误,而使用 cocos2d 2.0 编译得很好。

我一直按照指南直到“主要事件”段落,并且该应用程序应该可以工作。对于不想遵循指南的人,这是我到目前为止所做的:

  1. 正确将CCBReaderCCControlExtension文件夹拖到xcode工程中;
  2. 将 Cocos Builder 项目文件夹中的所有资源拖到 xcode 项目的资源中;
  3. 创建了一个名为“场景”的组,我在其中拖动了 MainMenuScene.ccbi 文件;
  4. 用这个替换了推送场景的代码行:

-

[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;
}

其中nodenil,这会导致断言失败,但我不知道为什么sceneWithNodeGraphFromFile:owner:返回nil,我的项目中有一个名为“MainMenuScene.ccbi”的文件,它也被复制到应用程序包中,所以我看不出这种方法返回nil的理由。如果有人能告诉我如何解决这个问题,或者告诉我一些将 Cocos Builder 场景导入 cocos2d 2.0 项目的替代方法,我将不胜感激。

4

3 回答 3

0

在这一行放一个断点:

CCNode* node = [CCBReader nodeGraphFromFile:file owner:owner parentSize:parentSize];

然后查看变量视图中的所有变量,然后进入该方法,您将看到为什么返回 nil,可能是错误的文件路径,或错误的类型,路径的 URL 等

于 2013-06-07T01:01:03.157 回答
0

拉米,看起来该文件未在您的项目中编译。检查文件“MainMenuScene.ccbi”是否在您的捆绑资源中。

您可以在您的项目 > 构建阶段 > 复制捆绑资源...

或者您可以在项目树中选择文件并检查右侧面板(实用程序)上的“目标成员资格”

于 2013-06-07T16:31:12.133 回答
0

原来是我忘记将Cocos Builder项目中的目录“ccbResources”添加到xcode中了。现在有了这个文件夹,整个项目就可以工作了。

于 2013-06-07T20:53:25.433 回答