【Unity】宴を活用して会話シーンを作る方法【UTAGE3/Adventure Creator】

 

こんにちは、ほしみです。


ビジュアルノベル用アセット「」を使い、Adventure Creator(AC)おける会話シーンを作成します。なおコーディングの知識はほぼ不要で、ACエディター側での操作もありません。


(AC自体にも会話シーンを作る機能はあるんですが、ちょっと編集と管理がメンドウなんですよね。宴をつかったほうがたぶんラクです)


以下、メモがてらまとめておきます。誤りがあれば指摘していただけると助かります。なお今回の例では「画像ボタンを押すと会話が発生する」というイベントを作ります。

 

スポンサーリンク

「公式解説は?」

 

▼ 会話シーンとして宴を使う方法 公式解説

会話シーンとして宴を使う | Unity用ビジュアルノベルツール「宴」
宴はビジュアルノベルだけではなく、ゲームの会話シーンやチュートリアルとして使うこともできます。 その方法をまとめました。 既存のシーンに、シナリオ再生エンジンを追加 「Tools > Utage > New Project」から新規プロジェクトを作成します。 プロジェクト名を入力し、「Type」を「Add To

 

上記の解説だけではわからなかったので、ほかにいろいろ調べたことを含めて補足的にまとめていきます。

 

 

「ざっくり教えて!」

 

  1. 宴 ⇒ New Project ⇒ Add To Current Scene
  2. Excelシナリオデータにシナリオラベル「*」追加
  3. SamleAdvEngineController.csUtage/Scripts/ADVに追加
  4. スクリプトのエラーをVisualStudioで修正(エラー行のアイコンクリック⇒using Utage;選択)
  5. 画像のインスペクターにSamleAdvEngineControllerスクリプトを追加
  6. 画像の「Adv Engine」項目にヒエラルキーのAdvEngineをD&D
  7. 画像にButtonコンポーネント追加
  8. クリック時()⇒ Runtime Only | 画像| SamleAdvEngineController.JumpScenario | *シナリオラベル
  9. 画像にImageコンポーネント追加
  10. Imageコンポーネントの色を透明化
  11. シーン再生して画像ボタンをクリックしてみる

 

スポンサーリンク

「くわしく教えて!」

 

宴プロジェクト作成

 

  • 宴をアセットストアから追加
  • メニューの「ツール⇒Utage⇒New Project」
  • プロジェクト名を打ちこむ
  • Typeは「Add To Current Scene(現在のシーンに追加)を選択

 

プロジェクト名とType以外はそのままでもOK

 

 

シナリオデータ作成

 

  • 宴プロジェクト名/宴プロジェクト名.xlsを開く
  • Startシート選択
  • ジャンプ用のシナリオラベル(例 *test)をCommandに追加
  • そのほか編集

 

無料ソフト「Libre Office」で編集した例。なおシナリオラベル「*test」を追記した以外はデフォルトのまま。

 

 

スクリプトの作成

 

▼ SamleAdvEngineController.csのコード

会話シーンとして宴を使う | Unity用ビジュアルノベルツール「宴」
宴はビジュアルノベルだけではなく、ゲームの会話シーンやチュートリアルとして使うこともできます。 その方法をまとめました。 既存のシーンに、シナリオ再生エンジンを追加 「Tools > Utage > New Project」から新規プロジェクトを作成します。 プロジェクト名を入力し、「Type」を「Add To

 

using System;
using System.Collections;
using UnityEngine;
using UtageExtensions;

public class SampleAdvEngineController : MonoBehaviour
{
// ADVエンジン
public AdvEngine AdvEngine { get { return advEngine; } }
[SerializeField]
protected AdvEngine advEngine;

//再生中かどうか
public bool IsPlaying { get; private set; }

float defaultSpeed = -1;

//指定のラベルのシナリオを再生する
public void JumpScenario(string label)
{
StartCoroutine(JumpScenarioAsync(label, null));
}

//指定のラベルのシナリオを再生する
//終了した時にonCompleteが呼ばれる
public void JumpScenario(string label, Action onComplete)
{
StartCoroutine(JumpScenarioAsync(label, onComplete));
}

IEnumerator JumpScenarioAsync(string label, Action onComplete)
{
IsPlaying = true;
AdvEngine.JumpScenario(label);
while (!AdvEngine.IsEndOrPauseScenario)
{
IsPlaying = false;
yield return null;
}
if(onComplete !=null) onComplete();
}

//指定のラベルのシナリオを再生する
//ラベルがなかった場合を想定
public void JumpScenario(string label, Action onComplete, Action onFailed)
{
JumpScenario(label, null, onComplete, onFailed);
}

//指定のラベルのシナリオを再生する
//ラベルがなかった場合を想定
public void JumpScenario(string label, Action onStart, Action onComplete, Action onFailed)
{
if (string.IsNullOrEmpty(label))
{
if(onFailed!=null)onFailed();
Debug.LogErrorFormat("シナリオラベルが空です");
return;
}
if (label[0] == '*')
{
label = label.Substring(1);
}
if (AdvEngine.DataManager.FindScenarioData(label) == null)
{
if(onFailed!=null)onFailed();
Debug.LogErrorFormat("{0}はまだロードされていないか、存在しないシナリオです", label);
return;
}

if (onStart != null) onStart();
JumpScenario(
label,
onComplete);
}

//シナリオの呼び出し以外に、
//AdvEngineを操作する処理をまとめておくと、便利
//何が必要かはプロジェクトによるので、場合によって増やしていく

//以下、メッセージウィンドのテキスト表示速度を操作する処理のサンプル

//メッセージウィンドのテキスト表示の速度を指定のスピードに
public void ChangeMessageSpeed( float speed)
{
if (defaultSpeed < 0 )
{
defaultSpeed = AdvEngine.Config.MessageSpeed;
}
AdvEngine.Config.MessageSpeed = speed;
}
//メッセージウィンドのテキスト表示の速度を元に戻す
public void ResetMessageSpeed()
{
if (defaultSpeed >= 0)
{
AdvEngine.Config.MessageSpeed = defaultSpeed;
}
}
}

 

  • SamleAdvEngineController.csというスクリプトファイルを「Utage/Scripts/ADV」に作成
  • Visual Studioで上記コードを貼りつける
  • 名前をつけて保存⇒UTF-8で保存(文字化け回避のため)
  • エラー行のアイコンをクリック⇒using Utage;選択

 

左端の「電球マーク」をクリック⇒「using Utage;」選択

 

 

スポンサーリンク

 

画像ボタンの設定

 

  • 画像のインスペクターにスクリプトを追加(コンポーネントを追加)
  • Adv Engine」項目にヒエラルキーのAdvEngineをD&D(アタッチ)
  • 画像にButton(ボタン)コンポーネント追加
  • クリック時()の欄をさがす
  • 「Runtime Only | 画像をアタッチ| SamleAdvEngineController.JumpScenario | シナリオラベル」とする
  • 画像にImage(画像)コンポーネント追加
  • Imageコンポーネントの色を透明化
  • 画像にGraphicRaycasterコンポーネント追加

 

Buttonコンポーネントの「クリック時()」の設定をする。アスタリスク(*)は不要です。

 

.JumpScenario」は特定シナリオラベルにジャンプするということ。


Imageコンポーネントを追加しないと画像ボタンはクリックできないので注意。初期状態ではボタン画像が白塗りされてしまうので、「色」をクリックして透明度を0に設定する。

 

 

テストする

 

 

▼ 再生してボタンをクリックしてみる

 

テスト環境なので背景の雑さは気にしないでください。

 

 

まとめ「わりとカンタン」

 

予想よりもカンタンに組みこめて助かりました。


Adventure Creatorだけでなく、ほかのゲームの会話シーンにも使えそうですね。ただし宴のデフォルトUIはシンプルすぎるので、ビジュアル面の改良は必要になるとおもいます。


今回は以上です。よきゲーム制作ライフを────ではまたφ(・ω・ )

 

▼ ゲーム制作チャンネル

ほしみゲーム制作CH【ゆっくり実況】
主にノベルゲーム制作の進捗と解説をのせていきます。▼使用ツール ・Unity(Adventure Creator+宴) ・ティラノスクリプト(ティラノビルダー)

 

 

 

 

▼ 関連記事

【Unity】Adventure Creatorの歩行グラフィックと背景を変えて歩かせてみた【使い方】
【Unity】Adventure Creatorの2DでWASD移動させる方法と注意点【ポイント&クリック⇒キーボード操作】
スポンサーリンク
タイトルとURLをコピーしました