MRが楽しい

MRやVRについて学習したことを書き残す

Unity Localizationを使ってプロジェクトをローカライズする その14(リストの表示をローカライズでフォーマットを指定する)

本日は Unity の技術調査枠です。
Unity Localization を使ってプロジェクトをローカライズする方法を記事にします。
今回はリストの表示をローカライズでフォーマットを指定する方法です。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

リストの表示をローカライズでフォーマットを指定する

UnityLocalization の Smart String で利用できる変換規則ではリスト型の表示についてもフォーマットを指定した表示ができます。
docs.unity3d.com

サンプルシーン

Localization のテーブルにリスト型の変換規則を以下のフォーマットで指定します。

{value(参照値の指定):list(リスト型の指定 list or l):template(フォーマットの指定)|spacer(区切り文字)|final spacer(最後の区切り文字)}

今回は以下の変換規則を指定して[Smart]にチェックを入れました。

{0:list:{}|, |, and }

値は以下の通りスクリプトからリスト型の値を代入します。
・LocalVariableList

using UnityEngine;
using UnityEngine.Localization.Components;

public class LocalVariableList : MonoBehaviour
{
    private LocalizeStringEvent _localizeStringEvent;

    void Start()
    {
        // String Reference の参照を取得する
        _localizeStringEvent = GetComponent<LocalizeStringEvent>();
        
        // LocalVariablesにリスト型の値を代入する
        // 0で指定しているので1つ目の要素が参照される
        _localizeStringEvent.StringReference.Arguments = new object[]
        {
            new[] { "one", "two", "three" }
        };
    }
}

適当な Text コンポーネントに Localize String Event でキーの参照を設定し、値を代入するサンプルスクリプトを合わせて追加します。

シーンを再生して動作を確認します。
以下の通り、リスト型を指定のフォーマットに従って出力できました。