我希望你能为我考虑以下情况并给出建议:我正在实现一个基本的cocos2d游戏,其中有一个GameplayLayer,其中包含一个CCSpriteBatchNode。我有一个GameObject:CCNode,它有3个CCSprites,如下所示:
CCSprite *bodySprite;
CCSprite *hairSprite;
CCSprite *eyesSprite;
当初始化 GameObject
时,我将精灵作为其子项添加到 GameObject
中,如下所示:
[self addChild:bodySprite];
[self addChild:hairSprite];
[self addChild:eyesSprite];
这样,我可以更改节点(
GameObject
)的位置、旋转等,所有精灵都会受到更改的影响,但是当我将多个GameObject
添加到场景中时,存在一个主要的性能问题,因为"每个精灵都会绘制自己,这意味着每个精灵增加一次绘制调用"。为了解决性能问题,在阅读this post后,我决定在初始化时将
GameObject
的精灵添加到GameplayLayer
的CCSpriteBatchNode
中,如下所示: [[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:bodySprite];
[[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:hairSprite];
[[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:eyesSprite];
现在,我必须逐个设置GameObject
的精灵位置,而不是
self.position = ...
我必须使用
bodySprite.position = ...
hairSprite.position = ...
eyesSprite.postion =...
这是一个繁琐的更改,我失去了将我的
GameObject
设计为精灵组合的最大优势之一。
问题:是否有一种方法可以使用节点位置来影响组合精灵的位置,我可以将它们作为GameObject
和sceneSpriteBatchNode
的子项添加吗?如果不能,正确的方法是什么?一个一个地设置精灵的位置吗?