rrbox / GameWidget

A simple UI layout tools for SpriteKit
MIT License
3 stars 0 forks source link

Widget をコントロールする方法に関するガイドライン #109

Open rrbox opened 1 year ago

rrbox commented 1 year ago

現時点における Widget を操作する方法は、NotificationCenter を使った方法となっています。この方法は、Display を用いた複雑に合成した Widget のコントロールに最適です。しかし、ゲームによっては単一の UI パーツを作成して即座に使用することが求められることがあり、このような場合は不向きであると思われます( NotificationCenter の API は、登録などの準備手続きであったり、特定の Widget を操作するための ID が必要であるため)。

そこで、シンプルな Widget のみ有効な、簡単にアクセスできる API を用意することにしました。

また、この API のためにいくつか責任分離に関連する理想をここで提示していきます。

rrbox commented 1 year ago

Notification center は Display のみで使用する

rrbox commented 1 year ago

単体の Widget は createModels を廃止し、具体的な SKNode サブクラスを生成するのみとする

「具体的な SKNode サブクラス」には、自分自身をコントロールするための API(メソッドやプロパティなど)を公開することでコントロールすることができます。これにより、Widget をより「SpriteKit らしく」使用できるようになります。


createModels 自体を実装できなくすることが現時点では難しいです。protocol の定義・構成を工夫すればできるかもしれませんが、ちょっとハードなチャレンジになりそうです。

以下のような隔離されたフローで生成処理が進行することが望ましいです。

  1. ノードが生成される
  2. Modifier が適用される
  3. NotificationSystem と接続される
rrbox commented 1 year ago

ID の型を統一化する

rrbox commented 1 year ago

Notification を利用しない API についても検討してください。

この場合、Widget から得られる SKNode サブクラスに専用のメソッドを用意するのだと思われます。

SKNode の name: String プロパティを利用して検索する方法も考えられます。