如何解决屏幕保护程序中的SpriteKit找不到图像
我正在使用SpriteKit在Swift中制作屏幕保护程序。 在应用中测试屏幕保护程序时,所有纹理均正确加载。一旦创建.saver并将其加载到“系统偏好设置”中,SpriteKit就会显示未找到图像。
我使用了(imageNamed: "")
,所以我尝试使用
var imageURL = Bundle.main.url(forResource: "gradient",withExtension: "png")
let imageGradient = NSImage(contentsOf: imageURL!)!
,但是我得到了相同的结果。 当内置到.saver文件中时,SpriteKit无法访问图像,但是在通过应用程序运行时,SpriteKit可以完美运行。
我已将资产包中的图像包含在Target的“复制捆绑包”资源/开发资产/资源标签中。
您可以从此处克隆项目:https://github.com/Nazar-Bibik/SavePortal
解决方法
我研究了这个项目:https://github.com/leebradley/nyan-screensaver 我找到了正确的方法:
- 您需要将图像放入捆绑包中,而不是xcassets中(将其放入.swift文件中)
- 使用以下内容代替使用图片名称
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中传递常规名称:您提供文件路径的String。 “ imagePath”是字符串类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。