Unityでノベルゲームを簡単に作れるエディタ拡張をとりあえずベータ版として無料で公開しました。対応バージョンはUnity2021.3.11f以上です
現状機能増やしすぎてバグ潰しできている自身がないのでバグがあれば下記のフォームから報告をお願いします
- ・機能について
- ・使い方
- ・スクリプトリファレンス
- ・利用規約・免責
- ・バグ報告・要望など
配布先
機能について
ノードを使用して選択肢による分岐を簡単に作成できます。セリフごとに背景・立ち絵や音楽、フォント、エフェクトなどを細かく設定することができます。

サンプル動画のように、ノベルゲームだけでなく3Dゲームの会話パートや、脱出ゲームのセリフ、チュートリアルの説明用など幅広く使うことができます。現在TextMeshProのみに対応しています。フォントのベイクの手間がかかるのでそのうちLegacyTextにも対応するかも…?
細かい機能についてはこちらに書いています。
使い方
1. 導入
使用する上でUniTaskとTextMeshProの導入をする必要があります。
先にUniTaskの導入をします。こちらからUniTask.◯.◯.◯.unitypackageパッケージをダウンロードしてインポートします。
https://github.com/Cysharp/UniTask/releases
次にTextMeshProの導入をします。UnityのWindow>TextMeshPro>Import TMP Essential Resourcesをクリックし、ライブラリをインポートします

最後にをダウンロードしたNovelEditorのUnityパッケージをインポートします。
2. UIの配置、見た目の設定
ヒエラルキーで右クリックし、UI>NovelPlayerをCanvasの子に配置します。(サンプルや動画ではCanvasはScale With Screen Size、アスペクト比は16:9に設定しています)
子オブジェクトにあるセリフ枠のスプライトやテキストなどの大きさを自由に決めます。UIはオブジェクトを消したり非アクティブにしたりしなければどこに配置しても大丈夫です。
①DialogueSprite…ここにセリフ枠が表示されます。実際に使用するセリフ枠を設定して大きさを調整してください。
②DialogueText…ここにセリフが表示されます。デフォルトのフォントと大きさを設定しておきます。
③NameText…ここに名前が表示されます。大きさを設定しておきます。
④BackGround…ここに背景画像が表示されます。大きさを設定しておきます
⑤UI…この下に設置したUIはセリフ枠の非表示機能を使う時に一緒に消すことができます
3Dゲームへの使用などで背景が不要な場合でもBackGroundオブジェクトは消さないでください。 データで背景を設定していない、かつPlayOnAwakeがオフのときに勝手に非表示になります。UIを調整するときに非表示にしたい場合は、BackGroundのImageのColorを透明にしてくださいUI達はゲーム再生と同時にリセットされるので、確認のために設定したスプライトを消したりしなくて大丈夫です
最後に、NovelPlayerの「使用するセリフ枠」に名前あり用のセリフ枠のSpriteを、「名前なし用のセリフ枠」に名前なし用のセリフ枠のSpriteを指定してください。どちらかだけでokな場合は、両方同じものを指定してください

3. ボタンの設定
選択肢を作らない場合は飛ばしても大丈夫。ボタンを作ります。
ChoiceManagerの下にUI>ChoiceButtonを配置します。
適当にスプライトや文字色の設定をしたら、プレハブにします。
ChoiceManagerの下に複数ボタンを設置して、GridLayoutGroupやContent-SizeFitterなどで好みの配置になるように調整しておきます。(配置したボタンも再生時にリセットされるので消さなくて大丈夫)
作成したプレハブを、NovelPlayerオブジェクトのNovelPlayerコンポーネントのButtonのところに登録します。
…Unity2021.3でGridLayoutGroupの設定をしているときにCtr+Zしたらクラッシュするバグを見つけているので気をつけてください

右下に配置とかでもok
4. 入力方法の設定
NovelPlayerオブジェクトのNovelPlayerコンポーネントから入力方法を決めます。
デフォルトでは以下の表のようになっています。
NextButton | 次のセリフに進む | Return、Space、左クリック |
SkipButton | 選択肢or会話が終わるまで飛ばす | N |
HideOrDisplayButton | UIの表示切り替え | H |
StopOrDtartButton | 再生の一時停止 | S |
入力方法をCustomにすると、UnityのInputを使用した操作が指定できます。
Rewirdとかを使いたい場合はNovelInputProviderを継承したクラスを実装して、そちらをスクリプトから指定することで設定できます。
5. データの作成
立ち絵の位置を作ります(不要な場合は作らなくてもいいです)。CharaManagerの子にImageを作成し、実際に使用する画像を使用しながら位置を調整してください。作成したらImageをプレハブにします
会話のデータを作成します。プロジェクトビューで左クリックして、メニューのNovelDataからデータを作成します。
作成したらデータを選択し、インスペクターから先程作成したImageのプレハブを指定して、下の「プレハブをセットしたら押す」ボタンを押します
(立ち絵の位置は後から増やしたり減らしたりすることもできます。同じプレハブが含まれている場合はその立ち絵に設定したイラストやエフェクトのデータは引き継がれます)
Openボタンを押すとエディタ画面が開きます。
右クリックのメニューからノード追加、ノードごとにインスペクターから会話を設定してください。一つのノードに複数の会話を追加できます。

ピンク色のノードから会話が開始します。設定の詳細はこちら

こんな感じの設定もできます
6. 設定、再生
プレハブについてるNovelPlayerコンポーネントの値を適当に設定します

設定項目についてはこちらに記載しています。
https://usagi-meteor.com/noveleditor-feature/#component
作成したデータを指定してPlayOnAwakeのチェックを入れるとゲーム開始と同時に再生されます。
スクリプトから再生する場合は、以下のようにして再生することができます。AudioSource的な感じです。詳しくはスクリプトリファレンスやサンプルを見てみてください
[SerializeField] NovelPlayer novelPlayer;
[SerializeField] NovelData data;
void Start(){
//二つ目の引数でtrueを指定すると、再生終了後に非表示になります
player.Play(data,true);
}
スクリプトリファレンス
記事長くなっちゃったのでこちらに置いてます
https://usagi-meteor.com/NovelEditorRef/api/NovelEditor.html
利用規約・免責
・MPLライセンスを使用しています。詳しくはLICENSE.mdを確認してください。
・商用利用可能です。
・ゲームに使用した場合、クレジット表記をお願いします。
→なしでもokにします。Twitterで #NovelEditor のタグをつけてくださるとリツイートします。リプでの貼り付けでも可
・使用報告は不要ですが、報告してくださるとプレイします。
・改変した場合は改変部分にMPLライセンスを適用してソースコードを公開してください
・このツールで生じたいかなる不利益に対しても責任を取りません。取れません(バグ取りきれてない可能性が高いのでその辺は特に注意、こまめなセーブ推奨。改善したいので何かあったら報告してくださると助かります。)
バグ報告・提案など
バグの報告や機能案などはこちらのフォームにお願いします。
https://forms.gle/f7wHe7zLATTZPGYt8
機能案については「こんな演出がしたいのでこの機能が欲しい」と書いてくださると嬉しいです。
質問などはTwitterのDMやここのコメントのほうが返信できると思います
お借りした素材
動画のセリフ枠/ボタンはびだちー素材館様、立ち絵はわたおきば様と三日月アルペジオ様、背景は気まぐれアフター様、BGMは甘茶の音楽工房様からお借りしました。