Titleの表示前に任意のシナリオを実行したい

53 views
Skip to first unread message

原田拓(DAT)

unread,
Aug 7, 2024, 4:17:41 AM8/7/24
to 宴ユーザーグループ
お世話になっております。

Titleでゲームを始める選択を行うと、デフォルトではStartシートのシナリオを実行するようになっておりますが、Titleが動作する前、可能であればBootとTitleの間に実行したいのですが、どのような方法を採れば良いでしょうか。

具体的にはBoot後、Titleが出る前に、Configを表示するかを問うダイアログを出し、OKならばConfigを表示し、その後Titleへ進むという感じです。

現在の開発環境は
Unity 6000.0.10f1
Utage 4.1.0
動作環境は webGL となっております。

宜しくお願いいたします。

マッドネスラボ

unread,
Aug 7, 2024, 3:56:36 PM8/7/24
to 宴ユーザーグループ
ダイアログを表示したり、UI遷移を変えるのは全てプログラムを書く必要があります。

今回であれば、
>Boot後、Titleが出る前に、Configを表示するかを問うダイアログを出し
UtageUguiBootを元にして、カスタムしたプログラム上記の動作にカスタムしたプログラムを書く必要があります。

/// タイトル表示のカスタムサンプル
public class UtageUguiBootCustom : UtageUguiBoot //UtageUguiBootを継承
{
//コンフィグ画面を設定
public UtageUguiConfig config;
//ダイアログを設定
public SystemUiDialog2Button dialog;

protected override IEnumerator CoUpdate()
{
if (isWaitSplashScreen)
{
while (!WrapperUnityVersion.IsFinishedSplashScreen()) yield return null;
}
//BGMなどを鳴らすために追加
Open();

if (fadeTextureStream)
{
fadeTextureStream.gameObject.SetActive(true);
fadeTextureStream.Play();
while (fadeTextureStream.IsPlaying) yield return null;
}

if (isWaitBoot)
{
while (Engine.IsWaitBootLoading) yield return null;
}
//ここまでは従来通り

dialog.OpenYesNo("コンフィグを開きますか?",
() =>
{
//Yesの場合の処理
this.Close(); //今の画面を閉じる

//コンフィグを開く
//前の画面としてタイトル画面を登録することで、コンフィグを閉じたときにタイトル画面に遷移するようにする
config.Open(title);
},
() =>
{
//Noの場合の処理
this.Close(); //今の画面を閉じる
title.Open(); //タイトル画面を閉じる
});
}


多言語対応をする場合は、「"コンフィグを開きますか?"」というテキストをローカライズ対応する必要があります。
また、ファイルのロード待ち画面への遷移処理は考慮してないようなので、省いています。

上記のコンポーネントを作成し
UtageUguiBootを削除して代わりにAddComponentし
インスペクターの各種の設定をしてくだください。
ss_0627.png


2024年8月7日水曜日 17:17:41 UTC+9 phr...@gmail.com:

原田拓(DAT)

unread,
Aug 7, 2024, 11:31:05 PM8/7/24
to 宴ユーザーグループ
早速の返信ありがとうございます。

昨日のうちに別のアプローチで解決しました。

・UtageUguiBoot に UtageUguiMainGame のメンバー変数を追加(mainGameと命名)
・InspectorでCanvas-AdvUI/MainGameを上記にアタッチ
・UtageUguiBoot.CoUpdateの最後でtitle.Open()しているところを、代わりにmainGame.OpenStartLabel( "PreStart" )として、シナリオにPreStartというシートを追加
・ザクロスケ様作成の「スクリプトからダイアログ/コンフィグ/バックログを開くプラグイン」を使用して上記追加したシートにてダイアログの表示とConfigの呼び出しを行い、最後にEndScenarioする
これでBootから特定のシナリオを呼び出し、そこでダイアログ表示やConfigの呼び出しを行い、EndScenarioによってTitleへ戻るという形にしました。

これでも一応は動作したのですが、問題がございましたらご指摘いただけると幸いです。


2024年8月8日木曜日 4:56:36 UTC+9 マッドネスラボ:

マッドネスラボ

unread,
Aug 8, 2024, 12:51:24 AM8/8/24
to 宴ユーザーグループ
シナリオからダイアログを呼ぶ必要があるのであれば、アプローチ自体は問題ないと思います。

ただ、宴のソースコードを直接書き換えてしまうと、宴のアップデートなどをするとソースコードが上書きされてもとに戻ってしまうので
上記のように継承した別のコンポーネントを使うか、
アップデートの時に上書きされないようにするかバックアップなどから元にもどすように気を付けてください。



2024年8月8日木曜日 12:31:05 UTC+9 phr...@gmail.com:

原田拓(DAT)

unread,
Aug 8, 2024, 10:29:13 PM8/8/24
to 宴ユーザーグループ
ご指摘ありがとうございます。
継承させて運用することにしました。

2024年8月8日木曜日 13:51:24 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages