Skip to content

Text ja

Tom_XV edited this page Sep 23, 2026 · 3 revisions

English | 日本語

ライブラリ Text は DragNWash.ModFramework.Text.dll で、名前空間は DragNWash.ModFramework.Text です。ゲームが表示する前の TextMeshPro のテキストを、どれでも見たり置き換えたりできます。テキストを書き換える Mod がいくつあっても、順番に動きます。

[BepInDependency(GameText.Guid, BepInDependency.DependencyFlags.HardDependency)]

テキストを書き換える

private IDisposable _rewriter;

private void Awake()
{
    _rewriter = GameText.AddRewriter(MyMod.Guid, context =>
    {
        if (context.Text == "New Game")
        {
            context.Text = "Start Washing";
        }
    });
}

private void OnDestroy() => _rewriter?.Dispose();
  • 書き換え処理は、ゲームが設定する すべての テキストで呼ばれます。辞書を引くくらいの軽い処理にして、すべての文字列に正規表現をかけるようなことはしないでください
  • order(既定 0)で実行順を決めます。小さいほうから順に動き、後の処理は前の処理が変えたあとの context.Text を受け取ります。context.Source のほうは、いつでもゲームが設定したテキストのままです
  • 書き換え処理で例外が起きると、GUID つきでログに出て、テキストは元のままになります

TextContext

プロパティ 意味
TMP_Text Component テキストが入るコンポーネント
string Source 書き換え前の、ゲームが設定したテキスト
string Text 表示されるテキスト。代入すると変わる
bool FromPrefab プレハブに入っていて、コードからは設定されていないテキスト(メニューやラベル)なら true
bool IsRefresh RefreshAll でもう一度適用しているときは true

変更をもう一度適用する

書き換えの前提になっているものが変わったとき(プレイヤーが言語を変えた、設定が切り替わったなど)は、これを呼んでください。

GameText.RefreshAll();   // メインスレッドからのみ

画面に出ているすべてのテキストについて、ゲームが設定したテキストに戻してから、書き換え処理をすべてやり直します。

そのほかのメンバー

メンバー 内容
const string Guid "com.tomxv.dragnwash.modframework.text"
const string Version ライブラリのバージョン
bool IsAvailable このゲームのビルドでフックが入っていれば true
bool TryGetSource(TMP_Text component, out string source) コンポーネントにゲームが最後に設定した、書き換え前のテキスト

やめてほしいこと

  • TMP_Text.text や SetText などに自分でパッチを当てること。そこはみんなで使う共有のフックなので、2 つ目のパッチを当てると、ほかのすべての Mod が見る結果まで変わってしまいます
  • 同じ台詞が何か所にも出てくるのに、英文だけを見て書き換えること。Dialogue の TryGetLine と組み合わせて、どの台詞なのかを確かめてください

Clone this wiki locally