本日は Unity の技術調査枠です。
Unity Localization を使ってプロジェクトをローカライズする方法を記事にします。
今回はスクリプトからロケールを変更する方法です。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
スクリプトからロケールを変更する
スクリプトから直接ロケールを変更する場合は LocalizationSettings.SelectedLocale のロケール設定を直接変更することで変更可能です。
// ロケールを日本語に変更する LocalizationSettings.SelectedLocale = Locale.CreateLocale("ja");
切り替えによる初期化は非同期で実行されるため、切り替えの完了を待機したい場合は以下のように LocalizationSettings.InitializationOperation.Task を待機します。
await LocalizationSettings.InitializationOperation.Task;
サンプルコード
以下のサンプルコードを作成しました。
・LocaleChanger.cs
using UnityEngine; using UnityEngine.Localization; using UnityEngine.Localization.Settings; public class LocaleChanger : MonoBehaviour { /// <summary> /// ロケールを日本語に変更する /// </summary> public async void ChangeLocaleToJapanese() { // ロケールを日本語に変更する LocalizationSettings.SelectedLocale = Locale.CreateLocale("ja"); // 必要であれば以下のコードで切り替えの完了を待機する await LocalizationSettings.InitializationOperation.Task; } /// <summary> /// ロケールを英語に変更する /// </summary> public async void ChangeLocaleToEnglish() { // ロケールを英語に変更する LocalizationSettings.SelectedLocale = Locale.CreateLocale("en"); // 必要であれば以下のコードで切り替えの完了を待機する await LocalizationSettings.InitializationOperation.Task; } }
各ボタンから処理を呼び出してロケールの切り替えを行うサンプルシーンを作成しました。
シーンを再生して動作を確認します。
ボタンを押下すると処理が呼び出され、ロケールを切り替えることができました。