首页 > 解决方案 > 屏幕保护程序中的 SpriteKit 找不到图像

问题描述

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

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

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

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

我已将图像包含在捆绑包、资产中、Target 的 Copy Bundle Resources/Development Assets/Resource Tags 中。

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

标签: swiftmacosimagesprite-kitscreensaver

解决方案


我研究了这个项目:https ://github.com/leebradley/nyan-screensaver 我发现了如何正确地做到这一点:

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

您需要在主体类(info.plist 文件中的主体类)中提供 .swift 文件的名称。其余的很简单 - forResource 是一个文件名,ofType 是一个文件扩展名,而不是在 imageNamed 中传递通常的名称:您提供文件路径字符串。“imagePath”是一个字符串类型。


推荐阅读