0

我想使用 cocosbuilder 和 cocos2d-x 为新旧 iPhone 开发我的游戏。我想为两种分辨率创建一个文件。我创建了一个 ccb 文件,然后将其发布到视网膜和正常分辨率。一切正常,但现在我有两个同名的 png 文件:

已发布-iOS/resources-iphone/star.png

已发布-iOS/resources-iphonehd/star.png

有一个问题。我正在使用 Xcode,它不喜欢项目中有 2 个同名文件。我可以将这些文件添加到单独的组中的项目中,但在最终的应用程序包中可能只有一个 star.png 文件。它是随机选择的。当我在 iphone 4s 上启动我的应用程序时,我有来自旧 iphone 显示屏的图片。如何将 cocosbuilder 用于多种分辨率?

4

2 回答 2

0

您应该将 XCode 项目中的 resources-iphone 和 resources-iphonehd 目录作为文件夹引用而不是组导入。您可以通过将文件夹拖放到您的 XCode 项目中来做到这一点。当您这样做时,您将看到应用程序包中出现的目录。您可以通过选择应用程序的目标并转到 Build Phases->Copy Bundle Resources 来检查。

之后,在您的 ApplicationDelegate.cpp 文件中,您应该将这些文件夹添加到 CCFileUtils 的搜索路径列表中。

std::vector<std::string> resDirOrders;

if (resolution is iphone) 
{
    resDirOrders.push_back("resources-iphone");
} 
else if (resolution is iphone retina) 
{
    resDirOrders.push_back("resources-iphonehd");
    resDirOrders.push_back("resources-iphone");
}

CCFileUtils::sharedFileUtils()->setSearchResolutionsOrder(resDirOrders);

这是 cocos2d-x 开发人员推荐的处理多种分辨率的方法(查看这篇文章)。您可以使用 CCDirector 中的窗口大小来确定当前分辨率。在 iphonehd 案例中,我包括非视网膜文件夹以及后备。

于 2013-03-15T21:53:58.617 回答
0

Xcode 和 iOS 应用程序包不是在文件夹中组织的,而是在平面包中。您需要重命名文件才能使其正常工作。我建议这样的事情:

// iOS Standard
Published-iOS/resources-iphonehd/star@2x.png

或这个

// cocos-2d Standard
Published-iOS/resources-iphonehd/star-hd.png
于 2013-03-14T17:39:10.183 回答