在 Cocos2d-x 中一次使用多个精灵表
Use multiple sprite sheets at once in Cocos2d-x
我正在用 Cocos2d-x C++ 制作平台视频游戏。
我想做的事情真的很简单,但我在互联网上找到的所有东西要么不起作用,要么是针对另一种编程语言的,比如 Objective-C。
我基本上有多个 Spritesheet 我想在我的游戏中使用。我无法将它们合并到 1 个大的 spritesheet 中,因为它们真的很大。
我只是想知道如何包含多个 spritesheet 以便我可以使用它们。
为了使用 1 个 spritesheet,我使用以下代码:
// load and cache the texture and sprite frames
auto cacher = SpriteFrameCache::getInstance();
cacher->addSpriteFramesWithFile("GJ_GameSheet02-hd.plist");
我读到我可以使用 SpriteBatch Node
,但我还没有找到任何与如何在 C++ 上使用它相关的内容。
如有任何帮助,我们将不胜感激。
谢谢
我使用了 Texture Packer 的高级功能:生成 .h 和 .cpp 文件。
但你只需要:
cache->addSpriteFramesWithFile("Graphics-0.plist", "Graphics-0.png");
cache->addSpriteFramesWithFile("Graphics-1.plist", "Graphics-1.png");
您只需要对所有 .plist 文件和 .png 多次调用 addSpriteFramesWithFile
如果你有很多,你可以创建一个 for 循环:
void addSpriteFramesToCache(int i)
{
SpriteFrameCache *cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("Graphics-" + std::to_string(i) + ".plist",
"Graphics-" + std::to_string(i) + ".png");
}
for (int i = 0; i < numberOfFramesToLoad; i++) //
{
addSpriteFramesToCache(i);
}
我正在用 Cocos2d-x C++ 制作平台视频游戏。
我想做的事情真的很简单,但我在互联网上找到的所有东西要么不起作用,要么是针对另一种编程语言的,比如 Objective-C。
我基本上有多个 Spritesheet 我想在我的游戏中使用。我无法将它们合并到 1 个大的 spritesheet 中,因为它们真的很大。
我只是想知道如何包含多个 spritesheet 以便我可以使用它们。
为了使用 1 个 spritesheet,我使用以下代码:
// load and cache the texture and sprite frames
auto cacher = SpriteFrameCache::getInstance();
cacher->addSpriteFramesWithFile("GJ_GameSheet02-hd.plist");
我读到我可以使用 SpriteBatch Node
,但我还没有找到任何与如何在 C++ 上使用它相关的内容。
如有任何帮助,我们将不胜感激。 谢谢
我使用了 Texture Packer 的高级功能:生成 .h 和 .cpp 文件。 但你只需要:
cache->addSpriteFramesWithFile("Graphics-0.plist", "Graphics-0.png");
cache->addSpriteFramesWithFile("Graphics-1.plist", "Graphics-1.png");
您只需要对所有 .plist 文件和 .png 多次调用 addSpriteFramesWithFile
如果你有很多,你可以创建一个 for 循环:
void addSpriteFramesToCache(int i)
{
SpriteFrameCache *cache = SpriteFrameCache::getInstance();
cache->addSpriteFramesWithFile("Graphics-" + std::to_string(i) + ".plist",
"Graphics-" + std::to_string(i) + ".png");
}
for (int i = 0; i < numberOfFramesToLoad; i++) //
{
addSpriteFramesToCache(i);
}