[英]Is there a way to add willSet parameter to a struct's instance variable?
我正在嘗試按照以下方式做一些事情:
class MyCGPoint: CGPoint {
override public x: CGFloat {
willSet {
}
}
}
自然地,我發現類不能擴展 Structs,所以我不確定如何將 willSet 方法附加到 CGPoint 中已經存在的 x 變量
我對這種方法的替代方案持開放態度。 我嘗試這樣做的原因是我可以在 willSet 方法中添加一個斷點,並確定是什么導致我的 SKSpriteNode 的 position 發生變化(即使物理體速度為 0)
對於我試圖用這種技術診斷的問題,請參閱即使速度為 0 的 SKPhysicsBody 也在移動。
您不需要子類化 struct(Swift 不允許您這樣做)。 只需使用相同的簽名創建您自己的 Point,以及從您的 Point 轉換為CGPoint
的方法。 然后用新的 Point 替換你的實現中的CGPoint
struct MyPoint {
var x: CGFloat {
willSet {
}
}
var y: CGFloat
var cgPoint: CGPoint { CGPoint(x: x, y: y) }
}
由於您需要使用它進行調試,因此您可以使用 watchpoint 、 -[SKSpriteNode setPosition:]
上的符號斷點(雖然我沒有測試過),甚至可以在SKSpriteNode
上使用類似這樣的擴展:
extension SKSpriteNode {
open override var position: CGPoint {
willSet {
print("Position of \(self) will change to: \(newValue)")
// Breakpoint here
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.