Udon で変数を動的に書き換える
ローカライズテキストに埋め込んでいる変数を動的に書き換えることができます。
Udon からローカル変数の値を書き換えることができます。
Udon からローカル変数の値を書き換える
ローカライズテキストは以下のように設定されているとします。
以下のような Udon が存在するとします。
この Udon は OnClick
メソッドが呼び出されると counter
変数をインクリメントしローカル変数に反映してからテキストを更新します。
変数の値をセットすると同時にローカライズの更新処理も呼び出されます。
public class ClickCounter : UdonSharpBehaviour {
[SerializeField]
LocalizeStringEvent localizeStringEvent;
int counter = 0;
private void Update() {
if (Input.GetKeyDown(KeyCode.Alpha3)) {
counter++;
var localizedString = localizeStringEvent.GetLocalized();
if (localizedString.TryGetValue<IntVariable>("counter", out var _value)) {
_value.SetValue(counter);
}
}
}
}
インスペクタから対象とする LocalizeString コンポーネントを指定しておきます。
以上で 3キー
を押すとカウントが1つずつ上がって表示されます。
Udon の変数をローカル変数として埋め込む
以下のように Object Reference
型を利用することで Udon 内の変数を直接埋め込むことができます。
Udon は以下のように定義しておきます。
public class ClickCounter : UdonSharpBehaviour {
[SerializeField]
LocalizeStringEvent localizeStringEvent;
public int counter = 0;
private void Update() {
if (Input.GetKeyDown(KeyCode.Alpha4)) {
counter++;
localizeStringEvent.RefreshString();
}
}
}
変数を更新した際にはローカライズの更新処理を呼び出す必要があります。