我正在使用SWIFT3 / SpriteKit屏幕保护程序并且屏幕保护程序正常工作,除非我无法加载纹理,因为当我执行以下操作时:
// load texture atlas
let textureAtlas = SKTextureAtlas(named: "Flyers")
SKTextureAtlas正在寻找" Flyers"在主丛中,当在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系列获得一些帮助...想法?
答案 0 :(得分: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)