Open rrbox opened 1 year ago
データのやり取りができればいいように思うので、NotificationCenter の部分を Combine に変更するのはアリかもしれません。 Combine + SpriteKit は以下のような一例が挙げられます。
let node = SKNode() let p = node.publisher(for: \.alpha) p.sink { i in print(i) } node.alpha = 0.2 node.alpha = 0.9
sink をすると、値を受け取って処理ができます。プロパティを変更すると、sink 内が実行されます。 Combine の特徴として、アプリのイベント処理を宣言型アプローチで設計できることが挙げられます。うまく使えば GameWidget と相性がいいかもしれません(GameWidget も宣言的なアプローチだからです。ただ中途半端ではあるので、うまくいかないかもしれないです)。
わかりやすそうな記事をまとめます。
@objc dynamic var property: PropertyType
このような記述がクラスのプロパティにある場合、KeyPath による publisher の生成ができるようです。
KeyPath
データのやり取りができればいいように思うので、NotificationCenter の部分を Combine に変更するのはアリかもしれません。 Combine + SpriteKit は以下のような一例が挙げられます。
sink をすると、値を受け取って処理ができます。プロパティを変更すると、sink 内が実行されます。 Combine の特徴として、アプリのイベント処理を宣言型アプローチで設計できることが挙げられます。うまく使えば GameWidget と相性がいいかもしれません(GameWidget も宣言的なアプローチだからです。ただ中途半端ではあるので、うまくいかないかもしれないです)。
わかりやすそうな記事をまとめます。