SKTextureAtlas可以加载来自" my"捆绑而不是"主机"捆绑?

时间:2016-12-15 22:38:14

标签: swift3 texturepacker sktexture texture-atlas sktextureatlas

我正在使用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系列获得一些帮助...想法?

1 个答案:

答案 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)