簡體   English   中英

有沒有辦法將 willSet 參數添加到結構的實例變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM