Swift SpriteKit:游戏运行时PNG图像显示为黑色。我该如何解决?

4

我正在使用Xcode、Swift和SpriteKit制作游戏。我在Photoshop中创建了一个包含透明度的png图像,在游戏中会呈现出纯黑色。我有其他包含透明度的png图像,它们都以预期的方式显示。我认为这不是代码问题,但是为了保险起见,这里是将图像引入游戏的代码(它位于didMoveToView函数内):

    let warning = SKSpriteNode(imageNamed: "yellow_warning")
    warning.setScale(0.1)
    warning.anchorPoint = CGPoint(x: 0, y: 0.5)
    warning.position = CGPoint(x: CGRectGetMinX(self.scene!.frame)+296, y: CGRectGetMidY(self.scene!.frame))
    warningsNode.addChild(warning)

warningsNode 是一个简单的 SKNode 并且是该场景的子节点。

这是我正在使用的图片。

这是我正在使用的图片

感谢您的帮助!


我使用了渐变来创建这张图片。 - J164
你能上传你使用的确切图像吗? - Whirlwind
1个回答

5
你的图片太大了。下载文件后,我发现它是270x9000像素。根据iPhone/iPad/Mac中的硬件配置,你的GPU可能无法处理所有这些像素。至少在iPhone/iPad上,我所知道的最大图像尺寸为4096x4096。你可以通过创建OpenGL上下文并读取告诉你最大纹理大小的属性来检查最大值。
我建议将您的图像缩小,使其不超过4096(或者您的硬件提示的任何值)。虽然拥有过大的纹理以保证未来兼容性很好,但你可能会走得太远。我建议更改该图像的副本,这样当有更强大的硬件时,你就不必再次生成它了。
编辑:你甚至可以将其制作成270x10并进行拉伸,因为没有人能够分辨出它被拉伸了,因为向下滑动时它看起来都一样(如果我错了,请随时纠正我)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接