gpt4 book ai didi

c++ - Cocos2D-X选择合适 Sprite 表的最高效方式

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:33 26 4
gpt4 key购买 nike

我的第一个场景有 3 套 Sprite 表。我正在使用 XCode 使用 Cocos2D-X 为 iOS 开发。

第一个 Sprite 表有一个扩展名-sd,第二个 Sprite 表有-hd,第三组有 3 个 Sprite 表(使用 Texture Packer Pro 中的 Multipack),扩展名为 -ipadhd。我按照教程进行操作,然后找到了这样的方法

CCString* file = (Utils::getArtScaleFactor() > 1) ? CCString::create("randomFile-hd.plist") : CCString::create("randomFile-sd.plist");

//The Utils::getArtScaleFactor function
float Utils::getArtScaleFactor()
{
return artScaleFactor;
}

1- 是否有类似的方法可以在 3 个文件而不是 2 个文件之间进行选择?

2- 这是选择合适文件大小的常用方法吗?

3- 这个问题有点偏离我正在讨论的主题,但我确实也需要一个答案:我有一个动画,它的帧被分成 3 个 sprite 表,我如何缓存 3 个 .plist 文件?如果那不可能,我有什么选择?

希望我提供了所有必要的信息!

问候

最佳答案

  1. 当然可以,但是为了清晰和灵活起见,可能应该用另一个结构(如开关)切换掉该三元运算符。

    例如:

    // Always init your pointers.
    CCString* file = NULL;

    switch (Utils::getArtScaleFactor())
    {
    // Scale factor shouldn't ever be 0, but we should account for it
    // so it doesn't get picked up by the default case.
    case 0:
    case 1:
    file = CCString::create("randomFile-sd.plist");
    break;

    case 2:
    file = CCString::create("randomFile-hd.plist");
    break;

    // Scale factors 3 and above get the largest resource.
    default:
    file = CCString::create("randomFile-super-hd.plist");
    break;
    }
  2. 是的,这种类型的逻辑在 wiki 上,除了他们对三种资源大小使用 if-else。我也在论坛和教程上看到过它。

  3. 根据 this thread在 cocos2d-iphone 论坛上,:

CCSprite can display CCSpriteFrames with different textures. So there’s no problem at all even to use animation that mixes frames from different textures (spritesheets) - Stepan Generalov

implementations posted there在 obj-c 中,但您可以轻松地将 cocos2d api 调用转换为 cpp。

关于c++ - Cocos2D-X选择合适 Sprite 表的最高效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com