タイトル画面と特定シナリオ間のBGMを保持したままにしたい

20 views
Skip to first unread message

MM

unread,
Mar 31, 2026, 4:17:14 AM (4 days ago) Mar 31
to 宴ユーザーグループ
Windows11
宴 4.2.7
Unity 6000.3.10f1

連続してのたびたびの質問、申し訳ありません。

まず前置きとして

現在、条件を満たすとタイトル画面が変わるようにしてあります。
画面パターンは複数あるため、一度開放された画面を簡単に切り替えて見れるように、切り替えボタンをタイトル画面に設置しています。

タイトル画面の変更は宴ユーザー様作成のプラグインを使用しておりまして、パラメーターで制御されています。
なのでExcelシナリオでパラメーターを調整するだけのものを作り、タイトル画面A→切り替えボタン→パラメーター調整シナリオ(パラメーターをBの数値にする)→タイトル画面Bといった方法にしています。

ここで表題の質問になるのですが、タイトル画面ABの間にシナリオを挟んでいるため、タイトルに流しているBGMが一瞬ストップして再度最初から流れるようになっています。
こちら、タイトルとこのパラメーター調整シナリオ間のみ、BGMを保持したままにすることは可能でしょうか?

マッドネスラボ

unread,
Mar 31, 2026, 4:57:40 AM (4 days ago) Mar 31
to 宴ユーザーグループ
シナリオの開始終了時には、Adv Engineコンポーネントの設定によって、ループ系のサウンド(BGMや環境音)が自動的に終了するようになっています。
>Is Stop Sound On Start シナリオ開始時にBGM、環境音とループ設定のあるサウンドを自動で止める
>Is Stop Sound On End シナリオ終了時にBGM、環境音とループ設定のあるサウンドを自動で止める

常に停止しないでいいなら、シーン上のAdvEngineコンポーネントのこれらの自動停止の設定をオフにすればいいです。
通常は音を止めたくて、上記のタイミングだけ自動停止したいならプログラムで自動停止のオンオフを切り替えるプログラムを呼ぶ必要があります。

using UnityEngine;
using UnityEngine.UI;
using Utage;
using UtageExtensions;

public class Sample : MonoBehaviour
{
    AdvEngine Engine => this.GetAdvEngineCacheFindIfMissing(ref engine);
    public AdvEngine engine;
   
    //シナリオの開始と終了でサウンドを自動停止を設定する
    public void SetSoundAutoStop(bool autoStop)
    {
        Engine.IsStopSoundOnStart = autoStop;
        Engine.IsStopSoundOnEnd = autoStop;
    }
}


おそらく、パラメーター調整シナリオの終了時点で自動停止してしまうことが原因だと思いますので
タイトル画面A→切り替えボタン→
このタイミングでボタンを押したときに次のように自動停止をオフにし
    public void SetSoundAutoStopOff()
    {
        Engine.IsStopSoundOnEnd = false;
    }

パラメーター調整シナリオ(パラメーターをBの数値にする)→タイトル画面B
このタイミングで通常のシナリオを呼び出す前に次のように自動停止をオンにする
    public void SetSoundAutoStopOff()
    {
        Engine.IsStopSoundOnEnd = true;
    }

などとしてみてください。。




2026年3月31日火曜日 17:17:14 UTC+9 MM:

MM

unread,
Mar 31, 2026, 8:33:24 AM (4 days ago) Mar 31
to 宴ユーザーグループ
ご教授ありがとうございます!

パラメーター調整シナリオからタイトル画面への遷移ですが、こちらはExcelのEndScenarioコマンドで戻っているだけになります。
なのでExcel上で調整してやらなければならないと認識しているのですが、この場合はsend messageでExcelから呼び出すことになるのでしょうか?

2026年3月31日火曜日 17:57:40 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Mar 31, 2026, 3:47:55 PM (4 days ago) Mar 31
to 宴ユーザーグループ
シナリオの終了前にフラグを戻すとシナリオ終了時に音が止まる状態に戻ってしまうので、
シナリオ実行中のタイミングで呼び出しても機能しないです。

このメソッドを、UtageUguiTitleのOnOpenイベントに登録して呼び出しみてください。
   public void SetSoundAutoStopOn()
    {
        Engine.IsStopSoundOnEnd = true;
    }


2026年3月31日火曜日 21:33:24 UTC+9 MM:

MM

unread,
Mar 31, 2026, 9:12:00 PM (4 days ago) Mar 31
to 宴ユーザーグループ
ご回答ありがとうございます、そちらの方法で試してみます。

ちなみにですが、

タイトル画面にて起動したらBGM自動停止がオフになるようにする→スタート、ロードなど画面切り替え以外のボタンのOnClickで、自動停止がオンになるようにする→通常シナリオではBGM自動停止がオン

という方法をとった場合、何か問題点や懸念点などありますでしょうか?

2026年4月1日水曜日 4:47:55 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Mar 31, 2026, 9:18:07 PM (4 days ago) Mar 31
to 宴ユーザーグループ
>  スタート、ロードなど画面切り替え以外のボタンのOnClick
理論上は一応問題ないとは思うのですが、
漏れがあると破綻してしまうので漏れがないようにするのが大変かなと思います。
たとえば、ギャラリーからの回想シーンなどでもシナリオ再生がある点なども漏らさずに対応が必要になります。

基本的には広範囲に渡る処理を避けて、特殊な処理はその特殊な範囲内で納められるようにするほうが開発は楽になるかと思います。



2026年4月1日水曜日 10:12:00 UTC+9 MM:
Reply all
Reply to author
Forward
0 new messages