Open lriki opened 2 years ago
ui-layout-2 ブランチで yoga を使った flex レイアウトをデフォルトにしてみたが、どうにも flex レイアウトはゲームでは使いづらい。 画面の上下左右にスナップしたコンテナをまずルート要素近くに用意し、flex はその中で使うことが多いだろう。(それでもほとんど StackPanel で足りるが)
grid layout は欲しい。この grid も、WPF のような高さを指定できるものと Flutter のような列数だけ指定してあとは Flow にするもの、など欲しい。
そうするとやっぱり UIElement ごとにレイアウト方法を変えたくなる。
HTML/CSS のように Style でやるならこんな感じ。
auto i = UIElement::With() .layoutDisplay(UILayoutDisplay::Grid) .size(100, 100) .build();
これまでのように派生クラスを用意するならこんな感じ。
auto i = UIGridLayout::With() .size(100, 100) .build();
後者の方が読みやすいだろう。
WPF, UE, Godot, Kivy, Flutter, Android あたりは後者。Unity の UIElements は前者。ゲームエンジンでは前者は珍しいかも。
これまで同様でよいだろう。 ただ、UIVAlignment, UIHAlignment をやめたい。この指定がどうしても冗長になってしまう。
次のようにできないだろうか?
Litho は positionDip と positionPercent といった具合で別関数がある。というかコアになってる yoga そのまま。 https://fblitho.com/javadoc/com/facebook/litho/Component.Builder.html
positionDip
positionPercent
ComponentKit は オブジェクトを渡す。 https://componentkit.org/docs/avoid-width-100-percent/
Flutter, Kivy, WPF はそもそも無いみたい。親の Grid など側で割合を指定できる。 https://stackoverflow.com/questions/43122113/sizing-elements-to-percentage-of-screen-width-height
Grid があればパーセントの指定は要らないかなという気がする。そうすると nan を無効値として扱うだけでよいため API はかなりシンプルにできる。
flex だけ、はやめよう
ui-layout-2 ブランチで yoga を使った flex レイアウトをデフォルトにしてみたが、どうにも flex レイアウトはゲームでは使いづらい。 画面の上下左右にスナップしたコンテナをまずルート要素近くに用意し、flex はその中で使うことが多いだろう。(それでもほとんど StackPanel で足りるが)
grid layout は欲しい。この grid も、WPF のような高さを指定できるものと Flutter のような列数だけ指定してあとは Flow にするもの、など欲しい。
Style vs 派生クラス
そうするとやっぱり UIElement ごとにレイアウト方法を変えたくなる。
HTML/CSS のように Style でやるならこんな感じ。
これまでのように派生クラスを用意するならこんな感じ。
後者の方が読みやすいだろう。
WPF, UE, Godot, Kivy, Flutter, Android あたりは後者。Unity の UIElements は前者。ゲームエンジンでは前者は珍しいかも。
デフォルトの Layout は?
これまで同様でよいだろう。 ただ、UIVAlignment, UIHAlignment をやめたい。この指定がどうしても冗長になってしまう。
次のようにできないだろうか?
パーセントの指定方法はどうしよう?
Litho は
positionDip
とpositionPercent
といった具合で別関数がある。というかコアになってる yoga そのまま。 https://fblitho.com/javadoc/com/facebook/litho/Component.Builder.htmlComponentKit は オブジェクトを渡す。 https://componentkit.org/docs/avoid-width-100-percent/
Flutter, Kivy, WPF はそもそも無いみたい。親の Grid など側で割合を指定できる。 https://stackoverflow.com/questions/43122113/sizing-elements-to-percentage-of-screen-width-height
Grid があればパーセントの指定は要らないかなという気がする。そうすると nan を無効値として扱うだけでよいため API はかなりシンプルにできる。