7

当我四处寻找有关 spritekit 纹理的信息时,我偶然发现了这句话:

如果一个节点的所有子节点都使用相同的混合模式和纹理图集,那么 Sprite Kit 通常可以在一次绘制过程中绘制这些精灵。另一方面,如果孩子被组织起来,使得每个新精灵的绘图模式都发生变化,那么 Sprite Kit 可能会像每个精灵一个绘图通道一样执行,这是非常低效的。

但是看看这个:

具有相同纹理的瓷砖(我向你保证这是一种纹理,而不仅仅是一种颜色) 无纹理瓷砖

具有自己纹理的瓷砖 纹理瓷砖

尽管使用的所有纹理都来自同一个图集,但绘制计数的差异为 40。

我对“地图集”这个词的解释是错误的吗?

这是我存储图像的地方:

纹理图集

我的示例是“纹理图集”,还是此处“图集”的定义是一个包含所有所需图像的单个 .png,并且从中切出单个图块?

或者问题可能在于我如何加载/其他东西?

谢谢!

4

1 回答 1

7

这里的问题很可能是由于节点图本身。假设您有 100 个精灵作为场景的子节点,没有自己的子子节点,并且它们都使用来自相同图集和默认混合模式的纹理,然后 Sprite Kit 将在一次绘制调用中批量绘制这 100 个精灵。

然而,如果这些瓦片精灵有自己的子节点,可能是用于调试的形状或标签节点,那么这将“中断”批量绘制操作。

检查您的节点图。确保所有平铺精灵都是同一父级的子级,并且没有自己的子级,使用来自同一图集的相同混合模式和纹理。那么批量绘图肯定会起作用。

如果这不起作用,请验证tiles.atlas 文件夹是否已正确转换为包中的纹理图集。如果您打开已编译的应用程序包,您应该会找到一个名为“tiles.atlasc”的文件夹,其中包含一个 plist 和一个或多个 png 文件,其中包含该文件夹的所有单独图像。此外,这些单独的图像都不应该出现在包中 - 如果它们作为单独的文件添加到包中,使用与图集中相同的名称,那么 Sprite Kit 将默认加载单独的图像文件,而不是从纹理图集中获取它们.

于 2014-04-04T08:03:11.580 回答