首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SKTextureAtlas,而不是仅仅通过名称调用图像

使用SKTextureAtlas,而不是仅仅通过名称调用图像
EN

Stack Overflow用户
提问于 2014-01-26 17:57:50
回答 2查看 1.7K关注 0票数 0

为什么我要做这些选项中的一个而不是另一个...我想,除了我必须编写的代码之外,我不明白它们有什么不同

在Xcode中-make一个名为"HeroSprites.atlas“的纹理地图集,带有图像"Hero.png”和可能的其他变体。

示例1:

代码语言:javascript
复制
SKSpriteNode* heroSprite = [SKSpriteNode spriteNodeWithImageNamed:@"Hero"];
//pulls in image from the atlas without having created an atlas object first
[self addChild: heroSprite];

示例2:

代码语言:javascript
复制
SKTextureAtlas* heroAtlas = [SKTextureAtlas atlasNamed:@"HeroAtlas"];
SKSpriteNode* heroSprite = [SKSpriteNode spriteNodeWithTexture:[heroAtlas textureNamed:@"Hero"]];
//pulls in image from the atlas after having created an atlas object first
[self addChild:heroSprite];

据我所知,两者似乎都将地图集加载到内存中,以便我可以调用其中的所有图像。我能想到的唯一原因是,如果在不同的地图集中有相同的图像名称,但避免这种情况是很容易的。

EN

回答 2

Stack Overflow用户

发布于 2014-02-26 21:17:28

以下是您应该了解的关于SKTextureAtlas的信息:

directory.

  • Drawing
  • 只要您将文件直接保存到资源树的atlas文件夹中,您就不必手动将其添加到文件mipmap速度更快,因为可以一次性绘制具有相同混合模式的所有精灵和来自相同atlas的纹理。
  • 不支持mipmap(遗憾的是,苹果没有记录这一点)。
  • 在其所有纹理之间共享混合模式(可以通过使用两个atlas来解决此问题,一个用于线性,另一个用于最近)。
票数 1
EN

Stack Overflow用户

发布于 2014-05-29 22:30:36

SKTextureAtlas可以提高内存使用率和渲染性能。例如,如果具有使用不同纹理绘制的精灵的场景,精灵工具包将为每个纹理执行一个绘制过程。但是,如果所有纹理都是从相同的纹理贴图集加载的,那么Sprite Kit可以在单个绘制过程中渲染精灵-并且使用较少的内存来执行此操作。无论何时,只要有总是一起使用的纹理,就应该将它们存储在atlas中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21362043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档