独自画面のボタンクリック時、JumpScenarioが動かない

123 views
Skip to first unread message

ももんが

unread,
Jul 11, 2025, 9:57:48 AMJul 11
to 宴ユーザーグループ

Unity バージョン: 6000.0.32f1 (Unity 6)
宴 バージョン: 4.1.6
Unityの習熟度: 初心者。プログラムはcsを軽く触れる程度(一年目)。
独自UI画面をCanvas-AdvUIの子要素として実装していて、シナリオシートから SendMessageで 画面を呼び出しています。
しかし、実装した画面にあるボタンをクリック時宴のシナリオへジャンプしようとしていますが、JumpScenarioが正常に動作しません 。
デバッグモードで独自画面を非表示にところ、 SendMessage後に残していたシナリオテキストが再生された状態でした。
理想の動きとしましては、
独自画面内のボタンクリック時、独自画面を閉じ MainGameに戻り、ラベル先に移動後選択次第でまた独自画面に戻るorシナリオが進む、となります。
ChatConfirmラベルは宴シナリオ内に存在
advEngineの参照、AdvScenarioPlayerのSend Message Targetも公式カンファレンスに合わせて実装済です。
また、独自画面呼び出し中もMainGameは起動したままです。
独自UIからJumpScenarioを使用する際の注意点、宴が特定の状態(シナリオ実行中など)の場合、JumpScenarioが無効になることはありますか?
以下にボタンの呼び出しに実装したcsを記載します。
  • 画面表示とボタンクリック時のソース
       
          // 画面表示   public void ShowDailyLife()
        {
            if (Canvas != null)
            {
                Canvas.SetActive(true);
            }
        }
      // ボタンクリック時   public void GoToChatConfirm()
        {
            if (advEngine != null)
            {
                advEngine.JumpScenario("ChatConfirm");
            }
        }

    以上申し訳ございませんがよろしくお願いいたします

マッドネスラボ

unread,
Jul 11, 2025, 10:54:26 AMJul 11
to 宴ユーザーグループ
おそらく、これらの問題と似てるかと思います。

JumpScenarioについて

JumpScenario後のクリック入力待ちの処理について
https://groups.google.com/g/utageuser/c/wsOXxA89p40/m/VjmH0ttiBAAJ



改めてまとめますと
  • JumpScenario
    • 基本的には即座に実行されない
    • EndScenario コマンド  やPauseScenarioコマンドなどの、シナリオ上で明確な区切りがあるときに呼び出す前提での設計になっています。
    • 任意のコマンドの実行中にJumpScenarioを呼び出した場合、シナリオの区切り(改ページのタイミング)までシナリオ移動はされません。
      • これは、ページ区切りを終えずに途中で中断されると動作保証ができないからです。
      • また、任意のタイミングで中断するということは、意図しない動作になってしまう危険が高いです
        • 例  フェードアウトしてからフェードインするなど複数のコマンドを組み合わせている場合
          • フェードアウト中に中断して JumpScenario してしまうとフェードインが実行されずに画面が塗りつぶされたままになってしまう。
        • そうったものを制御できる形でシナリオの書き方を工夫したり、JumpScenarioの呼び出し機能のオンオフ切り替えなどをする必要があります。
        • これは、宴の機能をいくら拡張してもおそらく解決しないゲームの仕様上の問題なので、各プロジェクトに合わせた調整が必要になると思います。
  • 今のシナリオを完全にクリアしてからなら、即座にJumpScenarioが可能です。
    • //今の表示等をクリア
      engine.ClearOnStart();

また、制限は多いのですが、今のシナリオとは別のサブシナリオを再生してそれを利用するという機能もあります。



2025年7月11日金曜日 22:57:48 UTC+9 ももんが:

マッドネスラボ

unread,
Jul 11, 2025, 12:03:29 PMJul 11
to 宴ユーザーグループ
新しい機能として、BreakAndJumpSceaniro(シナリオを中断してジャンプ)のような機能を追加したほうが良いかなとも思っているのですが、
実装に当たって問題があり、
「あとはテキストを最後まで表示して改ページするだけ」というタイミングでしかBreakAndJumpSceaniro(仮)の使用を想定していないのであれば、大丈夫だと思うのですが
エフェクト待ちなどいろいろな待機処理の途中だったり、飛ばされると困るコマンドが混じることもありうるのであれば、それらの解決は条件が複雑すぎるので宴側だけでは対処しきれない予感がしています。

どういった使用を想定しているか、ご意見伺えればと思います。



2025年7月11日金曜日 23:54:26 UTC+9 マッドネスラボ:

ももんが

unread,
Jul 16, 2025, 10:41:55 AMJul 16
to 宴ユーザーグループ

返信ありがとうございます。
頂いたURLと内容を元に色々と試してみたいと思います。

「シナリオを中断してジャンプ」という機能があればこちらとしてもまた実装の幅が増えて嬉しいのと、
使用タイミングとしては改ページするだけの状態で別のところに飛ばしたい時に使うくらいで、他の処理と混同して使う予定はございません。
仕様想定としては独自画面に飛ばす SendMessage後、画面からの反応次第で現状のシナリオを中断し、別シナリオシートにジャンプ、が理想となります。(以前と似た説明で申し訳ございません)
独自画面起動中は、メインシナリオ画面を後ろに表示させたままでメインシナリオ画面で流しているBGMをそのまま流し続けたいのもあります。

以上申し訳ございませんがよろしくお願いいたします。
(個別送信でお送ってしまったかもしれないので再送しています)



2025年7月12日土曜日 1:03:29 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Jul 16, 2025, 11:00:10 AMJul 16
to 宴ユーザーグループ
似たような要望があったため、「シナリオを中断してジャンプ」機能を拡張して使い方をまとめてみました。

詳しくはこちらをご確認ください。

リンク先の拡張機能は、宴のバージョンを最新(4.1.9)にアップデートしてから適用してみてください。


2025年7月16日水曜日 23:41:55 UTC+9 ももんが:
Reply all
Reply to author
Forward
0 new messages