3

我正在开发 SWIFT3/SpriteKit 屏幕保护程序,并且屏幕保护程序正常工作,但我无法加载纹理,因为当我执行以下操作时:

// load texture atlas
let textureAtlas = SKTextureAtlas(named: "Flyers")

SKTextureAtlas 正在寻找主捆绑包中的“传单”,当它在内部运行时screensaverengine.app,它不是纹理所在的捆绑包。

在我旧的基于 obj-c 的屏幕保护程序中,我必须执行以下操作才能从包中加载图像:

thisBundle = [NSBundle bundleForClass:[self class]];
fileName=[[NSString alloc ] initWithFormat:@"flyer%d", flyNum];
picturePath = [thisBundle pathForResource:fileName ofType:@"png"];
flyerImage= [[NSImage alloc ] initWithContentsOfFile:picturePath];

在我走在运行时加载图像和创建纹理的路线之前,我想利用 Stackoverflow 系列寻求帮助......想法?

4

1 回答 1

0

我从未使用过 SpriteKit。

但是查看文档,从iOS 8开始,您可以使用UIImage(named: imageName, in: bundle, compatibleWith: nil)从任何包中获取图像,然后使用这些图像的字典轻松实例化您的图集:

let bundle = Bundle(for: type(of: self))
var dictionary = [String:Any]()
["textureName": "imageName"].forEach { textureName, imageName in
    dictionary[textureName] = UIImage(named: imageName, in: bundle, compatibleWith: nil)
}
let atlas = SKTextureAtlas(dictionary: dictionary)
于 2016-12-16T03:45:16.520 回答