如何在Sprite Kit中设置纹理到tile

Nic*_*tak 7 objective-c ios sprite-kit

我正在制作一个精灵套件游戏,显然有一个带有平铺纹理的大型SKSpriteNode比使用多个带有平铺纹理的SKSpriteNode更有效.我的问题是当我尝试使用5x5瓷砖时

SKTexture* tex = [SKTexture textureWithRect:CGRectMake(0,0,5,5) inTexture:[SKTexture textureWithImageNamed:@"tile.png"]];
SKSpriteNode* node = [SKSpriteNode spriteNodeWithTexture:tex size:CGSizeMake(100,100)];
Run Code Online (Sandbox Code Playgroud)

图像的大小适当,但它被夹紧而不是平铺.在openGL术语中,我得到一个GL_CLAMP_TO_EDGE,我想要一个GL_REPEAT.无论如何,我可以在单个SKSpriteNode中实现纹理的平铺效果,而无需创建非常大的图像.

这是我的问题的图像: 在此输入图像描述

jun*_*eri 10

Afaik,没有办法用平铺纹理创建精灵.但你可以做的是,在一个绘图过程中渲染很多精灵.

从Apple的文档(Sprite Kit最佳实践 - >绘制内容):

如果节点的所有子节点使用相同的混合模式和纹理图集,那么Sprite Kit通常可以在单个绘图过程中绘制这些精灵.另一方面,如果对子项进行组织以便为每个新精灵更改绘制模式,那么Sprite Kit可能会作为每个精灵的一个绘图传递执行,这是非常低效的.