マインクラフト非公式フォーラム

本フォーラムでは多彩なサービスを提供しています。

利用方法は「Wiki」より確認できます。

ぜひご登録をお願いいたします!

リソースパック [WIP]遊び方(How to Play)を書き換える

イントロ​

json-ui周りを変更することで遊び方の項目が変更できることが分かったため、備忘録として残しておきます。

ここで扱う例の全体は以下から確認できます。


画面と要素のつながり​

1652851879307.png

遊び方の画面は3つの要素で構成されています。
  • 画面上部 現在選択しているセクション(下で説明)のトピックタイトル
  • 画面下部左側 セクションを選択するためのセレクター(ボタン)およびそれらを整理するカテゴリ
  • 画面下部右側 選択したセクションのコンテンツ
ここでセレクターとトピックタイトルは$section_topicという変数によりテキストの内容が決定されます。
詳細はhow_to_play_common.jsonに書かれています。
partial_how_to_play_screen:
{
    // 省略 ...
    "regular_button@how_to_play_common.section_toggle_button": {
        "$section_topic": "battlerule.regular"
    }
}
上のようにすると、セレクターの翻訳キーはhowtoplay.battlerule.regular, トピックタイトルはhowtoplay.battlerule.regular.titleとなります。
ここからわかるようにセレクターとトピックタイトルは連動しています。

また、セレクターとセクションコンテンツも同様の仕組みで連動しています。

例えば、$section_topicがruleである場合は、
JSON:
"rule_section@how_to_play_common.main_sections": {
    "bindings": [
      {
        "binding_type": "view",
        "source_control_name": "rule_button_toggle",
        "source_property_name": "#toggle_state",
        "target_property_name": "#visible"
      }
    ]
    // 中略 ...
  },
が表示されるセクションの表示判定を行うbindingsです。xxxというトピックに対してはxxx_button_toggleが対応する形になります。

セレクターとコンテンツを登録する部分はそれぞれselector_stack_panelsection_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:
Top