Skip to content

Sprite Sheets Formats

RH edited this page Jan 9, 2024 · 2 revisions

Support for custom texture atlas (sprite sheet) formats

  • Default sprite sheet format is PLIST v3. A description of the format may be found here. This is the format that the TexturePacker application outputs when you select the "Cocos2d-x" option.
  • Custom sprite sheet format reader is created by implementing the SpriteSheetLoader interface, then registering this implementation by calling SpriteFrameCache::registerSpriteSheetLoader().
  • Custom SpriteSheetLoader must have a unique identifier, which is assigned by using the SpriteSheetFormat::CUSTOM as the base value. For example, MyFormatId = SpriteSheetFormat::CUSTOM + 10.
  • In cpp-tests, SpriteFrameCache test has an implementation of a JSON sprite sheet format loader, implemented with the name GenericJsonArraySpriteSheetLoader. Use the GenericJsonArraySpriteSheetLoader and the default PlistSpriteSheetLoader as examples on how to implement the SpriteSheetLoader interface.
  • Sprite sheets must always contain unique identifiers for the sprite frames. Loading more than one sprite sheet that uses the exact same frame identifers will result in undefined behaviour. There are several ways to handle this, one being to prefix the graphic filenames, so for example, if two different files are named image1.png, one being for scene1 and another for scene of a game, then you would name them scene1_image1.png, scene2_image1.png. The other, and possibly the better method, is to use sub-folders folders to differentiate between frame names, such as scene1/image1.png and scene2/image1.png, and ensure that the sub-folder name is not stripped out during sprite sheet creation.