2

Я работаю на SWIFT3/SpriteKit заставки и у меня была заставка работает, за исключением я не могу получить мою текстуру, чтобы загрузить, потому что, когда я делаю следующее:Может ли SKTextureAtlas загружать комплект из «моего» пакета вместо «узла»?

// 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 для некоторой помощи ... мысли?

ответ

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)