← 作品一覧

MODUI Lib v0.10.1 / Config v0.2.4 · Unity(BepInEx)・C#

Native UI Lib + Config

mod ごとにバラバラの設定ファイル(これまで)

ゲームのオプション画面にそろう(その後)

SULFUR Native UI Lib は、ほかの mod がゲーム本来の Options 画面に自分のページを足せるようにするライブラリです。SULFUR Config はその上に作った mod で、入れている mod の設定をゲームの中で見て、変えて、Apply で保存できます。

ダウンロード数とバージョンは Thunderstore(2026-10-26 時点)。前提にしている mod の数は 2026-10-26 に Thunderstore で確認。

Options 画面の中の SULFUR Config

01課題

設定を変えるたびに、ゲームを閉じる

mod の設定を変えるには、ゲームを終了して設定ファイル(.cfg)を手で書き換え、もう一度起動する必要がありました。mod ごとにファイルが分かれていて、どこに何があるかも探さなければなりません。

02ねらい

いつもの Options 画面で設定する

  1. ゲームの中で変える設定はゲームを閉じずに、Options 画面から変えられるようにする。
  2. 見た目は原作どおり行の見た目も操作も SULFUR 本来の画面に合わせ、後から足したページだと感じさせない。
  3. 部品として配る画面の部品は独立したライブラリにして、ほかの作者も自分の mod のページを作れるようにする。

03設計

画面と設定を分けた理由

どこに出すか

mod ごとに独自の設定ウィンドウを作る(これまで)

ゲーム本来の Options 画面にページを足す(その後)

一時停止や入力の扱いはゲームに任せられ、見た目も SULFUR のままです。プレイヤーは、いつも開く画面で設定を見つけられます。

役割を分ける

設定の読み書きと画面を 1 つの mod にまとめる(これまで)

画面は UI Lib、設定の読み書きは Config(その後)

UI Lib は画面を描くだけで、設定ファイルには触れません。そうしておけば、画面の部品だけをほかの mod が使えます。

保存のタイミング

値を変えたらすぐに書き込む(これまで)

変更はいったん「保留」にして、Apply で保存する(その後)

各行に「変更なし/保留中/適用済み」が出るので、何がまだ保存されていないかが一目で分かります。

ほかの作者の mod

Config に対応させるには、Config を前提にしてもらう(これまで)

設定の説明に決まった言葉を書くだけで対応できる(その後)

「すぐ反映」「再起動が必要」「隠す」「危険」などを、BepInEx の設定に付ける Tags の文字列で伝えられます。Config を入れていない環境でも、その mod はそのまま動きます。

04実装

作るうえで苦労したこと

100 項目を超えても重くしない

全 mod の設定を並べると 100 項目を超えます。値を 1 つ変えるたびにページ全体を作り直すと、数百行分の UI を毎回作り直すことになります。変わった行だけを、その場で書き換える作りにしました。

日本語や中国語で文字が四角になる

SULFUR は言語に合わせてフォントを切り替えますが、部品の元にしていたテンプレートはずっとラテン文字用のフォントでした。文字の大きさはテンプレートから、フォントはいま表示している画面から取るように直しました。

足りない文字だけを補う

ゲームのフォントに漢字や ✓ のような記号がない時は、その場で OS のフォントから足りない文字だけを補います。フォントのファイルは mod に一切入れていません。

文字の入力欄がない

SULFUR の UI には文字の入力欄がありません。ゲームの見た目に合わせた入力欄を作り、カーソルや削除の動きも自分で組みました。

05反応

ほかの mod の土台になった