Spritesheet vs单个瓷砖

我目前正在编写一个2D平台游戏,这是我第一次编码video游戏。 现在我已经下载了“平台游戏艺术豪华”套餐 。 在瓷砖文件夹中有单个瓷砖和一个spritesheet,每个瓷砖上。
我应该使用spritesheet还是单个tile贴图?

如果你应该使用它们,取决于你。 您可以了解更多关于人们为什么使用精灵表 ,并决定是否值得为您的游戏实施。 对于固定的网格精灵表来说,这个逻辑不是太难。 只需要计算每个纹理的偏移和大小,并将其转换为UV坐标:

//create UV arrays for each texture in the sheet, store look up by index public TextureSheet(int width, int height) { for(int i = 0; i < width * height; i++) { textureMap.put(i, calculateUVMapping(i, width, height)); } } private Vector2f[] calculateUVMapping(int texture, int sheetWidth, int sheetHeight) { int textureIndex = texture; int u = textureIndex % sheetWidth; int v = textureIndex / sheetHeight; float xOffset = 1f / sheetWidth; float yOffset = 1f / sheetHeight; float uOffset = (u * xOffset); float vOffset = (v * yOffset); Vector2f[] UVList = new Vector2f[6]; //create the coordinates required for making a quad with the texture UVList[0] = new Vector2f(uOffset, vOffset); // 0,0 UVList[1] = new Vector2f(uOffset, vOffset + yOffset); // 0,1 UVList[2] = new Vector2f(uOffset + xOffset, vOffset); // 1,0 UVList[3] = new Vector2f(uOffset + xOffset, vOffset + yOffset); // 1,1 UVList[4] = new Vector2f(uOffset, vOffset + yOffset); // 0,1 UVList[5] = new Vector2f(uOffset + xOffset, vOffset); // 1,0 return UVList; } public Vector2f[] getTextureMap(int textureIndex) { return textureMap.get(textureIndex); } 

如果它是一个小项目,那么它应该没有关系。

绑定纹理是昂贵的。 所以spritesheets可以被绑定一次,然后,而不是绘制整个精灵,你只画一个表。 这可以是一个性能提升,但真的不是一个小项目的交易大。 另外精灵表还有一定的优化可以放在它们中(如抖动,颜色,压缩等)。

本教程是关于CC2D中的spritesheet,但是关于一般使用spritesheet有一些好的一点:

http://www.raywenderlich.com/32049/texture-packer-tutorial-how-to-create-and-optimize-sprite-sheets-in-cocos2d

但是,除非你使用图书馆,否则这是一个严肃的游戏,写你自己的spritesheetfunction将是一个痛苦。