はMadnessLabo氏によって開発されたUnityのビジュアルノベル作成ツールで,第1回アセットストアコンテストグランプリに輝いたアセットです.
ビジュアルノベル作成のみならず,ゲームの会話シーンも作成できます.

目次

  1. セットアップ
    1. プロジェクト
    2. ヒエラルキー
  2. コマンド
    1. 画像
    2. レイヤー
    3. 立ち絵
    4. サウンド
    5. ボリューム
    6. ボイス
  3. ロジック
    1. パラメータ
    2. 分岐
    3. ジャンプ
    4. サブルーチンへのジャンプ
    5. マクロ
    6. If文
  4. UI
    1. UI変更
  5. その他
    1. シナリオシートの分割
    2. 小説
    3. 文字飾り
    4. セリフに顔アイコンを出す
    5. グレーアウト
    6. ダイシング
    7. アニメーション

セットアップ

アセットストアから宴ver.3を購入したら,Tools>Utage>NewProjectで新規プロジェクトを作ります.

アセットのUtageフォルダは移動・変更しません.
ただし,その中に含まれるSampleフォルダは使用しないので,ビルドのときには削除します.

プロジェクト

プロジェクト名のついたフォルダが作られたら,プロジェクト名のついたエクセルのファイルがあります.
シナリオ等はこのエクセルファイルで編集します.
分岐等以外の箇所では,Excelのシナリオシートの上行から順にシナリオが進んでいきます.

また,素材をリソースフォルダに置いておけば,エクセルのファイルで指示された通りに音声や画像を呼び出してくれます.

ヒエラルキー

ヒエラルキーにはとりあえずは触る必要ないコンポーネントたちがあります.
細かい調整が必要になったときに使います.

  • Managers:システム管理のコンポーネント
  • AdvEngine:シナリオ再生のコンポーネント
  • AdvEngine Starter:ロード関連の設定

コマンド

ビジュアルノベルでは使用素材を表示したり切り替えることで,場面や登場人物を動かしていきます.
Excelには素材を登録するシートと,シナリオのシートがあり,シナリオシートではコマンドを記述することで使用素材の表示や切り替えなどを行います.
シートには第1行にArg1などの列名がそれぞれ入っており,引数を記述できるようになっています.

画像

画像に関するコマンドは以下の通りです.

  • Bg 背景
  • BgEvent イベント画像(立ち絵は出ない)
  • Sprite スプライト(Arg1 = スプライト名(異なる名前なら複数表示可,後から呼んだものが手前),Arg2 = ラベル)
  • Particle パーティクル(火,水,煙などチリチリする動き)

これらは

  • Arg1 = ラベル
  • Arg3 = レイヤーの指定
  • Arg4 = x座標, Arg5 = y座標
  • Arg6 = フェード秒

を持ちます.

また,CharacterOffBgOffのようにOffをつけたコマンドで非表示化します.
非表示にするときの引数は

  • Arg1 = ラベル(空欄なら全消し)
  • Arg6 = フェード秒

です.

素材はResources>Texture以下の適当なフォルダに置き,エクセルのTextureシートに登録します.
Label,Type(BgEventSpriteか),FileName(Bgフォルダ等以下の相対パス)は入力必須です.

レイヤー

レイヤーとは絵を描く透明なシートのようなもので,重ね置きすることで画像に前後関係をつけることができます(1人に1レイヤー).

  • LayerOff 指定レイヤー上のオブジェクトを全て非表示
  • LayerReset 指定レイヤーを初期状態に

引数は

Arg1 = ラベル
Arg6 = フェード秒(LayerOffのみ)

です.

使用するレイヤーはエクセルのLayerシートで設定します.
LayerName,Type,Order(描画順)は入力必須です.

立ち絵

他の画像同様,引数は

  • Arg1 = ラベル
  • Arg3 = レイヤーの指定
  • Arg4 = x座標, Arg5 = y座標
  • Arg6 = フェード秒

です.
Arg2は登場パターンに使われます.

  • (なし) キャラクター立ち絵 (Arg2 = 登場パターン,<off>と書けば立ち絵だけ出ない)

CharacterOffで非表示にできます.

素材はResources>Texture>Characterに置き,Characterシートに登録します.
CharacterNameとFileName(Characterフォルダ以下の相対パス)は入力必須です.

キャラクターをエクセルに登録しなかった場合は,Arg1に入れた名前が付き,立ち絵なしとなります.
もしArg1が空白であれば,ただのテキストとなります.

サウンド

サウンドに関するコマンドは以下の通りです.

  • Se サウンドエフェクト(=「ドン!」などの効果音)
  • Bgm BGM(ずっと流しておくゲームの音楽)
  • Ambience 環境音(喫茶店のカップの音や鳥のさえずりなど舞台となる場所で時々聞こえる音)

引数は

  • Arg1 = ラベル
  • Arg2 = ループのTRUE/FALSE(BGMはTRUE
  • Arg5 = 前の曲をフェードアウトする時間(BGMと環境音のみ)
  • Arg6 = フェード秒

をとります.
Excelのシートで左右両端になるArg1, 6は,画像同様,ラベルとフェードに充てられています.

素材はResources>Sound以下の適当なフォルダに置き,Soundシートに登録します.
Label,Type(SeBgmAmbienceか),FileName(Seフォルダ等以下の相対パス)は入力必須です.

ボリューム

ChangeSoundVolumeでボリュームを変更できます.

引数は

  • Arg1 = Type(SeBgmAmbienceか)
  • Arg2 = ボリューム(0〜1の値)
  • Arg6 = フェード秒

です.

ボイス

Voiceを入れ,Voice列にボイスファイル名を指定します.
基本的に1回使いきりの音であるサウンドエフェクトと同様に,

  • Arg1 = ラベル
  • Arg2 = ループのTRUE/FALSE
  • Arg6 = フェード秒

の引数を持ちます.
停止はStopVoiceです.
ChangeSoundVolumeも有効に機能します.

素材はResources>Sound>Voiceに置き,Soundシートに登録します.
Label,Type(Voiceとする),FileName(Voiceフォルダ以下の相対パス)は入力必須です.

ロジック

パラメータ

  • ParamシートでLabel,Type(BoolIntなどの型),Value(初期値)を入力.
  • シナリオシートにおけるコマンドはParamで,Arg1に増減するための計算式を入れて使う.
  • Textなどでは<param="パラメータのラベル">の形で使う.

キャラクターシートのConditionalとパラメータを組み合わせることで,状態によって外見の異なる立ち絵を呼べる.

分岐

選択肢を見せるシナリオの分岐点ではSelectionを使います.
引数は,

  • Arg1 = ジャンプ先
  • Arg2 = 条件式
  • Arg3 = 選択時に実行する計算式

です.
ジャンプ先は,「*ジャンプ先」のようにアスタリスクを先頭につけて記述します.

Selectionの引数に加えてArg4 = オブジェクト名を与えることで,
シーンでクリックした画像によりシナリオを分岐させることができます.
この場合,コマンドはSelectionClickです.

ジャンプ

選択肢ではなくフラグ等によりシナリオをスキップするため,Jumpを使用することができます.
引数はSelectionのはじめ2つの引数と同じで,

  • Arg1 = ジャンプ先
  • Arg2 = 条件式

です.

ジャンプの特別な場合として,ランダムにシナリオを選んで進めるための,JumpRandomがあります.
JumpRandomは,Jumpの2つの引数に加えて

  • Arg3 = 遷移確率用の整数値(未設定のものを1として何倍出やすいジャンプか).

という変数を持ち,JumpRandomが並んだ複数行の中から1つのシナリオを選択して進みます.

なお,あまりよいラベルの付け方ではないと思いますが,ジャンプ先のラベルは半角数字から始めても大丈夫でした.

サブルーチンへのジャンプ

サブルーチンはEndScenerioの外に書ける特殊なジャンプ先で,JumpSubroutineによって入ることができます.
サブルーチンの終わりでは,EndSubroutineしなければなりません.
同じサブルーチンを複数回呼ぶ時に便利です.

処理が終わったら,元の行の終了時点に戻ります.
別のところに戻すにはJumpSubroutine

  • Arg3 = 終了時ジャンプ先

を与えてください.

JumpSubroutineRandomJumpRandomと同じ要領で使うことができ,JumpSubroutineの3つの引数に加えて

  • Arg4 = 遷移確率用の整数値

を持ちます.

マクロ

マクロは,Macroシートに*マクロ名からEndMacroで囲うことで作成できます.
引数をとる場合,該当引数を代入したいセルに%Arg1と書く.
すると,マクロで引数Arg1をとることができます.
変数を設けなければ,入っている数値のまま動きます.

引数が入れられなかった場合のデフォルト値を設定しておくには,マクロ名を定義する行のArg1–Arg6に書けばOKです.

公式のマニュアルによれば,以下の特長があるとのことです.

  • マクロ内で変数をParamコマンドの変数にとれます.
  • 剰余演算子の%と併用可能です.
  • 引数では固定的な数値をとってくるのだが,マクロ内(でのみ)&entity_nameでパラメータentity_nameをとることにより数値や文字列,登場させるキャラクター名を動的に変化させることができます.

If文

宴公式では推奨こそされていないものの,条件分岐のためにIf文が用意されています.
IfElseIfがArg1で与える条件に対して使え,それ以外のケースはElseに送られます.
If文終了時にEndIfを置くことが必要です.

UI

  • 既読選択肢の表示色を変えるには,ヒエラルキーのAdvEngine>UI>Selectionに付けられたスクリプトのSelected Color ModeをChangeにします.
  • メッセージウィンドウの強制表示と非表示はそれぞれdShow/HideMessageWindow,メニューボタンではShow/HideMessageButtonです.
  • GuiActiveでGUIをオン・オフします.引数はArg1 = GUIオブジェクト名(未入力なら全て),Arg2 = On/Offです.

UI変更

  • Packing Tagはアトラス化するための名前です.
  • 9-slicingするには,Sprite EditorからBorderを適当に設定した上で,UIオブジェクトのSpriteでImage TypeをSliceに設定します.
  • UIのスプライトはImageコンポーネントのSource Imageから変更します.
  • 同一のファイル名でUI画像の差し替えを行うなら,Unityの外で行います.
  • セーブウィンドウなどにはプレハブが使われています.

その他

シナリオシートの分割

ツール>シナリオデータビルダーでエクセルリストにファイルを入れてインポートします.
順序があり,2章で1章のファイルは読めますが,その逆はできないので注意しましょう.

小説

クリックで読み進めるテキストとして宴を利用する場合,ヒエラルキー AdvEngine>UI>MessageWindowのRect Transformでメッセージボックスのサイズを大きくする.

バックログで文字が省略されないように,プロジェクトのPrefabs>UI>backLogItemでIs Multi Text In Pageにチェックを入れ,有効にします.

あとはエクセルファイルにシナリオを書きます.
通常のText列とPageCtrl列を使用し,PageCtrl列のコマンドは以下の通りです.

  • (なし) 改ページのクリックを待つ
  • Input クリック後,次コマンドへ
  • InputBr クリック後,改行して次コマンドへ
  • Next 入力待ちなく次コマンドへ

文字飾り

HTMLタグの要領で文字列を囲むことにより,装飾することができます.

  • 太字:<b></b>で囲む.
  • 斜体:<i> </i>
  • 下線:<u> </u>
  • ルビ:<ruby = ふりがな> </ruby>

セリフに顔アイコンを出す

キャラクターシートのIconIconSubFileNameを入れます.

グレーアウト

グレーアウトするには,Utage>Scripts>ADV>Extra>AdvCharacterGrayOutController.csをAdvEnginにAddComponentします.

Maskは以下の通りです.

  • Noneにすると,グレーアウトしない.
  • Talkingで喋っているキャラがグレーアウトしない.
  • NewCharacerInPage ページで加わったキャラはグレーアウトしない.
  • NoChanageIfTextOnly テキスト表示のみでも色変化しない.

Main/SubColorはグレーアウトしない/する場合の色を表します.

グレーアウトしないキャラはEnable Change Orderで話しているとき手前に出せます.
Order Offsetはそのオフセット値です.

ダイシング

画像処理軽減のため,差分のある部分だけ画像を差し替えるダイシングの方法です.

データを作成するには,まずTools>Utage>DicingConverterを開きます.

  • Inputは対象画像群のフォルダです.
  • Output1は.assetが作られるフォルダです.適当に用意できます.
  • Output2はバラバラになった画像が吐き出されるフォルダです.適当に用意できます.

あとはビルドするだけです.
ビルドだと前回ビルドからの差分を見るそうなので,画像変更したりしたらリビルドする必要があります.

Characterシートでは以下のように設定します.

  • FileNameはできたアセットまでの,Characterフォルダからの相対パスを入れます.
  • SubFileNameは元の画像のテクスチャ名にします.Characterフォルダ内でfolder/picture.pngという位置に置いていたテクスチャであれば,pictureになります.folderやpngは要りません.
  • FileTypeはDicingです.

アニメーション

宴では目パチ(EyeBlinkシート),口パク(LipSynchシート),パラパラアニメ(Animationシート)が設定できます.
Live2D Cubism3を使用できます.