はじめに
今回はLocalization
のLocal Variable
をスクリプトから設定してみる記事になります。
LocalizeStringEvent
コンポーネントから設定する方法はよく紹介されているのですが、あくまでスクリプト上でLocal Variables
(ローカル変数)を設定して活用する方法が分かりませんでした。
そこでいくつかやり方を見つけたので紹介したいと思います。
Smartを有効にする
Local Variables
で変数を渡す際に、Table
にEntry
を追加する際にSmart
にチェックを入れておくのを忘れずに行なってください。
やり方
以下のTable
を例に実装していきます。
LocalizedStringを活用する方法
// Localized StringのコンストラクタにてLocal Variablesを設定 var localizedString = new LocalizedString(tableReference: "SampleTable", entryReference: "Key1") { {"player-name", new StringVariable { Value = "You" }}, }; // LocalizedString.AddでLocal Variablesを追加 localizedString.Add("enemy-name", new StringVariable{ Value = "Slime" }); Debug.Log(localizedString.GetLocalizedString());
// Localized StringのコンストラクタにてLocal Variablesを設定 var localizedString = new LocalizedString(tableReference: "SampleTable", entryReference: "Key1"); // LocalizedString.ArgumentsでLocal Variablesを追加 localizedString.Arguments = new object[] { new Dictionary<string, object> { ["player-name"] = "You", ["enemy-name"] = "Slime", } }; Debug.Log(localizedString.GetLocalizedString());
GetLocalizedStringを活用する方法
// Localized StringのコンストラクタにてLocal Variablesを設定 var localizedString = new LocalizedString(tableReference: "SampleTable", entryReference: "Key1"); Debug.Log(localizedString.GetLocalizedString(new object[] { new Dictionary<string, object> { ["player-name"] = "You", ["enemy-name"] = "Slime", } }));
var text = LocalizationSettings.Instance.GetStringDatabase().GetLocalizedString(tableReference: "SampleTable", tableEntryReference: "Key1", new object[] { new Dictionary<string, object> { ["player-name"] = "You", ["enemy-name"] = "Slime", } }); Debug.Log(text);
ひとこと
これ以外にも手法がありそうな気もするので、もし知っている方はコメント等で教えていただけると嬉しいです。