与地图集文件和SpriteKit批处理绘图的问题

问题描述:

因此,我遇到了一个迟缓的问题,我正在构建一款平台游戏。所以我正在研究如何提高性能。与地图集文件和SpriteKit批处理绘图的问题

我正在尝试进行批处理绘图,以减少绘制调用。我有问题,但。因此,一个全新的项目:

我有4个英雄精灵,所有图像都存储在.atlas文件夹中。所以Atlas文件夹中的每个精灵都有一个1/2/3x图像。

我将其拖放到xcassets文件夹中。然后我去我的sks文件创建4个精灵并相应地改变纹理。

默认情况下,它们都具有相同的混合模式。我将默认规则设置为true以忽略兄弟顺序。所有精灵都在默认的z 0层上。并且我已经设置了显示抽签计数。

我希望看到比1次战平,因为所有的图像都在同一个图谱文件,但我看到4

有我丢失的东西?

只是好奇我怎么得到这个正常工作。谢谢你的帮助!!!

iOS9上的xcassets存在一个bug,即使图像放置在xcassets中,绘制调用也不会减少。显然这是固定的更高版本,但自那时以来,我从来没有与xcassets困扰。相反,我将图像放置在项目中的独立.atlas文件夹中,这会减少绘制调用。

尝试放置4个具有相同纹理的子画面,然后查看绘制调用的内容。如果精灵使用相同的纹理,它不应该是4。我还建议添加8个精灵(每个4个不同的纹理* 2个精灵),并查看绘制调用是否增加到8个。

如果绘制调用不增加,那么我会假设4个绘制调用是它需要绘制4个不同的精灵(如果它们非常复杂)。如果绘画调用增加,请尝试从xcassets中移除图像,并将它们放置到项目中的单独.atlas文件夹中,然后比较绘制调用。

+0

感谢您的意见。我已经用atlas文件夹而不是xcassets进行了测试,并且得到了相同的结果。如果我使用相同的图像,那么计数会下降到1.我的印象是,如果图像在同一个图集文件中,那么它只需要一次绘制调用。我的图像也不那么复杂。 – Discoveringmypath

+0

这里是一个Apple视频的链接,讨论批处理:https://developer.apple.com/videos/play/wwdc2014/608/。如果你跳到20-22分钟,它会谈论它。 – Discoveringmypath

+0

如果画图数量下降到1与许多精灵与相同的图像,那么我想它的工作正常。我的(基本的)理解是每个纹理将会有1个绘制调用。但是如果你有40个精灵和10个不同质地的精灵,绘制计数仍然只有4个,因为同样的纹理被重用。 – JohnV