精灵套件 – 使用textureFromNode时Retina上的低分辨率纹理

对于我的游戏,我试图从其他两个纹理创建自定义纹理。 这是为了在我的精灵中允许各种各样的颜色等。

为此,我通过将两个纹理一起添加,然后通过使用将其应用于新的SKTexture来创建精灵

SKTexture *texture = [self.view textureFromNode:newSprite]; 

这总体上很好用,我得到了一个很好的自定义纹理。 除了在Retina设备上尝试我的游戏时,屏幕上的纹理尺寸正确,但分辨率明显较低。

纹理都在那里,并正确命名,所以我不相信这是一个问题。

有没有人遇到过这个,或者知道如何创建合适的@ 2x纹理?

我终于(不小心)想出了如何解决这个问题。 您正在创建纹理的节点必须添加到场景中。 否则,您将获得纹理的非视网膜尺寸。

它并不理想,因为创建纹理而不必将它们添加到屏幕上会很好。

我发现了另一种提高ShapeNodes创建的纹理保真度的方法,与这个问题并不完全相关 – 但是有用的英特尔。

在x2的大小和宽度上创建你的形状。 以相同的超大比例创建所有字体和其他形状。 确保您的定位相对于此总体尺寸(例如,不要使用绝对尺寸,使用容器的相对尺寸。)

当您将纹理创建为精灵时,它将是巨大的 – 但随后应用

 sprite.scale = 0.5; // if you were using 2x 

我发现这使它看起来分辨率更高,没有颗粒感,字体上没有模糊,尖角。

我还使用了tex.filteringMode = SKTextureFilteringNearest;

因此:它不必添加到场景中然后删除。