在SpriteKit中,如果使用[SKTexture textureWithImageNamed:]方法加载图像,它将首先搜索包,然后搜索Atlases,如果找不到纹理,它将创建占位符图像并加载。
有没有办法找出(而不用视觉检查)加载的图像是否是占位符?
这似乎不是一种非常“ cocoa ”的方式来处理这种类型的错误。
developer.apple.com现在倒闭了,所以我想向SO提出这个问题。
最佳答案
SKTexture具有一些有用的私有(private)属性(例如,参见https://github.com/luisobo/Xcode-RuntimeHeaders/blob/master/SpriteKit/SKTexture.h),但是在Swift和开发过程中,我正在使用以下属性:
extension SKTexture {
public var isPlaceholderTexture:Bool {
if size() != CGSize(width: 128, height: 128) {
return false
}
return String(describing: self).contains("'MissingResource.png'")
}
}
注意! :
仅当使用
SKTextureAtlas
时,此方法才有效:let t1 = SKTextureAtlas(named: "MySprites").textureNamed("NonExistingFoo")
// t1.isPlaceholderTexture == true
let t2 = SKTexture(imageNamed: "NonExistingBar")
// t2.isPlaceholderTexture == false
关于ios - 如何确定SKTexture是否为占位符图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22875530/