Udon で言語設定を制御する
VRCClientConnector
プレハブをワールドに設置することで自動的に言語設定に追従させることができます。
言語切替の挙動をカスタマイズしたい場合はこのプレハブを使わずに自作の Udon から言語の変更を行うことができます。
Udon から言語を変更する
以下のような Udon が存在するとします。
この Udon は ChangeRandomLang
メソッドが呼び出されたときに使用可能な言語の中からランダムな言語へ変更します。
public class LanguageChanger : UdonSharpBehaviour {
[Inject, SerializeField, HideInInspector]
Localization localization;
private void Update() {
if (Input.GetKeyDown(KeyCode.Alpha1)) {
var availableLocales = localization.AvailableLocales;
var locale = availableLocales[Random.Range(0, availableLocales.Length)];
localization.SelectedLocale = locale;
}
}
}
以下のようなスクリプトを用意します。
LanguageChanger
と同じ場所にスクリプトを追加します。
合わせて SceneScope
コンポーネントも追加しておきます。
public class LanguageChangerInstaller : MonoBehaviour, IInstaller {
public void Install(ContainerBuilder builder) {
builder.RegisterComponentInHierarchy<LanguageChanger>()
.UnderTransform(transform);
}
}
以上で 1キー
を押すと変更可能な言語の中からランダムに言語が変更されます。
Udon から言語の変更を検知する
以下のような Udon を用意します。
public class LocalizationSubscriber : UdonSharpBehaviour {
[Subscriber(typeof(Localization))]
public void OnLocalizationLocaleChanged(string locale) {
Debug.Log($"Locale changed to `{locale}`.");
}
}
以上で言語が変更された際に OnSelectedLocaleChanged
メソッドが呼び出されるように なります。