屏幕保护程序中的 SpriteKit 找不到图像

SpriteKit in screensaver can't find images

我正在 Swift 使用 SpriteKit 制作屏幕保护程序。 在应用程序中测试屏幕保护程序时,所有纹理都正确加载。一旦我制作了 .saver 并将其加载到系统偏好设置中,SpriteKit 就会显示找不到图像。

我用过(imageNamed: ""),所以我尝试使用

var imageURL = Bundle.main.url(forResource: "gradient", withExtension: "png")
let imageGradient = NSImage(contentsOf: imageURL!)!

,但我得到了相同的结果。 SpriteKit 无法在内置到 .saver 文件中时访问图像,但在 运行 通过应用程序时可以完美运行。

我已将图片包含在包中、资产中、Target 的复制包中 Resources/Development Assets/Resource 标签。

您可以从这里克隆项目:https://github.com/Nazar-Bibik/SavePortal

我调查过这个项目:https://github.com/leebradley/nyan-screensaver 我找到了正确的做法:

  1. 您需要将图像放入 bundle,而不是 xcassets(将其与 .swift 文件放在一起)
  2. 不要使用图片名称,而是使用以下内容
let sourceBundle = Bundle(for: MainSwiftFile.self)
let imagePath = sourceBundle.path(forResource: "picture-name", ofType: "png")!
neededTextures = SKTexture(imageNamed: imagePath)

您需要提供 .swift 文件的名称以及您的委托人 class(info.plist 文件中的原则 class)。 剩下的很简单 - forResource 是一个文件名,ofType 是一个文件扩展名,而不是在 imageNamed 中传递通常的名称:您提供文件路径的字符串。 "imagePath"是String类型。