【问题标题】:Combining two textures in one将两种纹理合二为一
【发布时间】:2011-01-24 02:22:00
【问题描述】:
我正在为 iOS 开发一款游戏。我正在使用 cocos2d 库。我想要一个对象,它有 3 个部分 - 开头、结尾和中间。我有这些组件的图像。并且对象可以在创建时被拉伸。但只有中间部分应该被拉伸,开头和结尾不应该有缩放。因为这个操作只在我决定为这个对象创建一个新的 CCSprite 而不是保留三个(为了提高性能)是个好主意。
我正在使用 CCSPriteBatchNode 进行渲染,但我不知道我是否真的需要组合对象的各个部分(也许使用批处理渲染 3 个部分将与渲染一个预先组合的对象一样快)。
所以有两个问题:
我需要在一个对象中组合部件吗?
如果是,我该怎么做?
【问题讨论】:
标签:
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 个部分放在上面,而不是使用画笔。