【问题标题】:Combining two textures in one将两种纹理合二为一
【发布时间】:2011-01-24 02:22:00
【问题描述】:

我正在为 iOS 开发一款游戏。我正在使用 cocos2d 库。我想要一个对象,它有 3 个部分 - 开头、结尾和中间。我有这些组件的图像。并且对象可以在创建时被拉伸。但只有中间部分应该被拉伸,开头和结尾不应该有缩放。因为这个操作只在我决定为这个对象创建一个新的 CCSprite 而不是保留三个(为了提高性能)是个好主意。

我正在使用 CCSPriteBatchNode 进行渲染,但我不知道我是否真的需要组合对象的各个部分(也许使用批处理渲染 3 个部分将与渲染一个预先组合的对象一样快)。

所以有两个问题:

  1. 我需要在一个对象中组合部件吗?

  2. 如果是,我该怎么做?

【问题讨论】:

    标签: iphone objective-c c ios cocos2d-iphone


    【解决方案1】:

    您可以创建一个节点并将三个精灵作为子节点添加,而不是组合纹理。然后,您可以将父节点作为单个实体使用。

    类似的东西:

    CCNode *sprites = [CCNode node];
    
    CCSprite *spriteA = [CCSprite spriteWithSpriteFrameName:@"spriteA.png"];
    spriteA.position = ccp(-10, 0);
    [sprites addChild:spriteA];
    
    CCSprite *spriteB = [CCSprite spriteWithSpriteFrameName:@"spriteB.png"];
    spriteB.position = ccp(0, 0);
    [sprites addChild:spriteB];
    
    CCSprite *spriteC = [CCSprite spriteWithSpriteFrameName:@"spriteC.png"];
    spriteC.position = ccp(10, 0);
    [sprites addChild:spriteC];
    

    您可以根据您的参数缩放和定位每个单独的精灵,然后使用sprites 对象将它们作为一个整体进行定位/缩放。

    可能会对性能造成很小的影响,因此在将其用于大量精灵之前,我会三思而后行,但我在某些情况下一直在使用这种方法,就我而言,我没有发现任何性能问题.

    【讨论】:

      【解决方案2】:

      查看 RenderTexture 演示。

      您可以使用这些图像代替画笔将 3 个部分放在上面,而不是使用画笔。

      【讨论】:

        猜你喜欢
        • 2014-10-05
        • 2017-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-17
        • 1970-01-01
        相关资源
        最近更新 更多