在我的SpriteKit游戏中,我想在fieldBitMask
属性上为我的精灵的SKPhysicsBody
添加一个属性观察者。我希望在fieldBitMask
属性发生变化时收到通知,以便我可以采取一些措施。
我覆盖SKPhysicsBody
但是当我尝试将重写的类分配给像普通SKPhysicsBody
对象这样的精灵节点时,我遇到了一堆错误。我还考虑过对SKPhysicsBody进行扩展,但Apple文档说,“扩展可以为类型添加新功能,但它们不能覆盖现有功能。”因此我似乎无法覆盖{{1}这种方式使它成为一个属性观察者。
我知道如何在我创建的新自定义类中创建属性观察器。但是,将属性观察者添加到属于Apple库的类中的现有属性的最佳方法是什么?
答案 0 :(得分:3)
我认为你可以使用Key Value Observing。您可以将观察者添加到更改的属性中
您应该在观察者类中使用implement observeValue(forKeyPath:of:change:context:)
方法。
Here你可以找到Swift示例(" Key-Value Observing"部分)。
答案 1 :(得分:2)
您可以像这样继承SKPhysicsBody
:
class Subclass: SKPhysicsBody {
override var fieldBitMask: UInt32 {
didSet {
print(fieldBitMask)
}
}
}