イントロ
json-ui周りを変更することで遊び方の項目が変更できることが分かったため、備忘録として残しておきます。ここで扱う例の全体は以下から確認できます。
画面と要素のつながり
遊び方の画面は3つの要素で構成されています。
- 画面上部 現在選択しているセクション(下で説明)のトピックタイトル
- 画面下部左側 セクションを選択するためのセレクター(ボタン)およびそれらを整理するカテゴリ
- 画面下部右側 選択したセクションのコンテンツ
詳細は
how_to_play_common.json
に書かれています。
partial_how_to_play_screen:
{
// 省略 ...
"[email protected]_to_play_common.section_toggle_button": {
"$section_topic": "battlerule.regular"
}
}
howtoplay.battlerule.regular
, トピックタイトルはhowtoplay.battlerule.regular.title
となります。ここからわかるようにセレクターとトピックタイトルは連動しています。
また、セレクターとセクションコンテンツも同様の仕組みで連動しています。
例えば、$section_topicがruleである場合は、
JSON:
"[email protected]_to_play_common.main_sections": {
"bindings": [
{
"binding_type": "view",
"source_control_name": "rule_button_toggle",
"source_property_name": "#toggle_state",
"target_property_name": "#visible"
}
]
// 中略 ...
},
セレクターとコンテンツを登録する部分はそれぞれ
selector_stack_panel
とsection_content_panels
です。前者は並べる順番に意味がある可能性はありますが、コンテンツ側は特に順番は関係ないように見えます。参考までにデフォルトリソースパックはアルファベット順になっていました。
コンテンツの詳細
コンテンツの内容はセクションのcontrolsの部分に記述されます。ここでjson-uiの記法として継承・拡張(?)があるのでここを説明しておきます。
json-uiにはプログラミング言語にあるような継承の概念のようなものがあります。
"識別子A@名前空間X.識別子B"
というような書き方をすることで、名前空間Xにある識別子Bの内容を引き継いで識別子Aとして定義できます。詳細解説(英語)
これを利用して文字の表示方法を変えることができます。
例えば、
how_to_play_common.paragraph
は通常の文章、how_to_play_common.paragraph_with_icons
はアイコン入りの文章、how_to_play_common.header
を継承すればヘッダー表示になります。また単に見た目を変化させるだけではなく、使用者の環境によって表示されるテキストを変えることもできます。
how_to_play_common.paragraph_keyboard
はキーボード・マウス操作、how_to_play_common.paragraph_gamepad
はコントローラー操作、how_to_play_common.paragraph_touch
はタッチ操作時にそれぞれ表示されるといった具合です。[WIP]また、環境によって表示が異なる絵を表示するというのはテキスト側単体でも行うことができます。
Last edited: