在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/

10-12 15:16