LangageManagerの「Language」を空欄にしておけば、プレイヤーの端末の言語を自動的に初回起動時の言語にしますので、UIを表示する必要はないかもしれません。
ドキュメントだと、LanguageとDefaultLanguageの関係がわかりづらかったかもしれませんが、次のようになります。
Language : 起動時の言語を指定する。空欄の場合は、プレイヤーの端末が使っている言語が自動的に設定される。
DefaultLanguage: プレイヤーの言語がゲーム側で用意したローカライズデータにない場合に、代わりに使う言語。
たとえば、ゲーム側で英語と日本語だけ用意してある場合に、フランス語のプレイヤーが起動した場合に、英語で表示するのか日本語で表示するのか?という設定。
例として、
Languageを空欄、DefaultLanguageをEnglishとしておけば、
「初回起動時はプレイヤーの言語に合わせた言語が設定され、その言語がゲーム側で用意していない言語の場合はEnglishが表示される」ということになり、
日本語のプレイヤー → 日本語
英語のプレイヤー → 英語
フランス語のプレイヤー → 英語
もちろん、明示的にUIを表示するのも親切なアプローチだと思います。
その場合の実装方法ですが、
AdvSaveManager の
isAutoSaveは、オートセーブの機能自体を有効にするかどうかの判別なので、それを使っても初回起動かは判別できません。
宴には初回起動かどうかを判別する機能が用意されているわけではないです。
やるとすれば、セーブデータを活用するしかないので、
Paramシートに初回起動フラグを追加して、それをプログラムから読み込んで利用する形になります。
サンプル:
〇 Paramシートへ初回起動フラグを追加
「
FirstBooted」などの名前のパラメーターを追加し、Typeを「Bool」、FileTypeを「System」、Valueを「False」としてください。
〇UtageUguiBoot.cs
次のようにして追加したパラメーター(FirstBooted)を読み取って、初回起動処理を追加します。
//AdvEngineの起動待ちをする
if (isWaitBoot)
{
while (Engine.IsWaitBootLoading) yield return null;
}
//初回起動済みフラグを読み込む
bool firstBooted = Engine.Param.GetParameterBoolean("FirstBooted");
if(!firstBooted)
{
//初回起動済みとしてフラグを立てる
Engine.Param.SetParameterBoolean("FirstBooted",true);
//画面切り替え
LanguageCheck.Open();
//画面を遷移するならこっちの画面は閉じる。(遷移しないでこっちの画面を残すなら待機処理に書き換える)
this.Close();
yield break;
}
これはCoUpdateの前ではなく、CoUpdateの最中に行います。
宴の起動前に宴のパラメーターを読み込むことはできないので、Engine.IsWaitBootLoadingなどで宴の起動待ちを終わらせてからパラメーターにアクセスする形になります。
2022年7月5日火曜日 14:36:36 UTC+9 Shunpei: