Skip to content

Getting started ja

Tom_XV edited this page Sep 23, 2026 · 4 revisions

English | 日本語

空のプロジェクトから、Mods 画面に設定つきで出て、ゲームの Options 画面にも行を足す Mod を作るまでの手順です。

1. 必要なもの

  • .NET SDK と、C# をビルドできるエディター(Visual Studio、Rider、VS Code)
  • BepInEx 5.4.23.5 とフレームワークを入れた Drag'n Wash(プレイヤー向け 参照)
  • net472 を対象にした BepInEx 5 プラグインのプロジェクト

2. 参照

ゲームのフォルダから次を参照し、Copy Local / Private を false にして配布物に含めないようにします。

DLL 場所
BepInEx.dll、0Harmony.dll BepInEx/core/
UnityEngine.dll、UnityEngine.CoreModule.dll(ほかに使うモジュールも) DragNWash_Data/Managed/
DragNWash.ModFramework.dll BepInEx/plugins/DragNWash.ModFramework/
ライブラリの DLL(例:DragNWash.ModFramework.Text.dll) BepInEx/plugins/DragNWash.ModFramework.Text/
<ItemGroup>
  <Reference Include="DragNWash.ModFramework">
    <HintPath>$(GameDir)\BepInEx\plugins\DragNWash.ModFramework\DragNWash.ModFramework.dll</HintPath>
    <Private>false</Private>
  </Reference>
</ItemGroup>

ゲームの DLL は絶対にリポジトリにコミットしないでください。

3. プラグイン

using System.IO;
using BepInEx;
using BepInEx.Configuration;
using DragNWash.ModFramework;

[BepInPlugin(Guid, "MyMod", "1.0.0")]
[BepInDependency(ModFramework.Guid, BepInDependency.DependencyFlags.HardDependency)]
public class MyMod : BaseUnityPlugin
{
    public const string Guid = "com.example.mymod";

    private ConfigEntry<bool> _fastMode;

    private void Awake()
    {
        // Mods 画面に出す情報。アイコンを起動時に読み込むため Awake で登録する
        ModFramework.Register(new ModInfo
        {
            Guid = Guid,
            DisplayName = "My Mod",
            Description = "One or two sentences on what it does.",
            Authors = new[] { "Me" },
            Website = "https://github.com/me/mymod",
            UpdateRepository = "me/mymod",
            IconPath = Path.Combine(Path.GetDirectoryName(Info.Location), "icon.png"),
        });

        // BepInEx の設定は、Mods 画面の Settings タブになる
        _fastMode = Config.Bind("General", "FastMode", false, "Scrub twice as fast.");

        // 同じ設定を、ゲームの Options 画面の行にもする
        GameOptions.AddToggle(Guid + ".fastmode", "Fast Mode",
            getSaved: () => _fastMode.Value,
            save: value => _fastMode.Value = value);

        ModFramework.Ready += () => Logger.LogInfo("Framework ready.");
    }
}

それぞれの役割は次のとおりです。

  • [BepInDependency(ModFramework.Guid, HardDependency)] があると、BepInEx がフレームワークを先に読み込み、フレームワークがなければ分かりやすいメッセージを出して、この Mod を読み込みません。使うライブラリごとに、GameText.Guid のように 1 行ずつ足します
  • ModFramework.Register で、説明・作者・Web サイト・アイコンが Mods 画面に出ます。登録しなくても一覧には出ますが、情報が少なくなります
  • Config.Bind の bool、数値、string、列挙型(と AcceptableValueList / AcceptableValueRange)には、Settings タブで操作部品が付きます。隠したい項目は、Browsable = false を持つオブジェクトをタグに付けます
  • GameOptions.AddToggle と AddChoice で足した行は、ゲームの Save と Back ボタンに合わせて動きます。詳しくは 中核 API を見てください

4. 入れて試す

  1. ビルドし、DLL(と icon.png)を BepInEx/plugins/MyMod/ にコピーする
  2. ゲームを起動する。タイトル画面の Mod の数が 1 つ増えます
  3. Options → Mods を開いて My Mod を選び、説明・アイコン・Settings タブを確かめる
  4. BepInEx/LogOutput.log にこの Mod の行が出ているか見る

次に読む

  • テキストを変えたり、台詞に反応したり、デバッグ用のタブを足したりするなら、Text、Dialogue、Tool window を見てください
  • テクスチャやフォントを読み込むなら、先に Assets を読んでください。Direct3D 12 では読み込むタイミングが大事です
  • 公開する前に、ほかの Mod と一緒に動かす を読んでください

Clone this wiki locally