【Unity】Localizationで画像を切り替える

言語ごとに画像を切り替える(Localization) C#
言語ごとに画像を切り替える(Localization)
バージョン
  • Unity6 (6000.0.25f1)
  • Localization 1.5.3

UnityのLocalizationを使用して画像のローカライズ対応をしていきます。
このページでは「日本語(Japanese)」と「英語(English)」の2種類に対応させていきます。

テキストのローカライズはこちら↓

ローカライズ用画像の準備

最初にローカライズ用の画像を準備します。
このページでは以下の画像を使っていきます。

日本語対応

日本語対応サンプル画像

英語対応

英語対応サンプル画像

多言語対応テーブル作成

まずは各言語に対応する画像のテーブルを作成します。

Unity Editor

メニューバー「Window」→「Asset Management」→「Localization Tables」

テーブル作成用ウィンドウが開きます。

Localization Tables

「+ New Table Collection」をクリック


さらに詳細ウィンドウが表示され、テーブルの種類や名前を設定します。
このページでは「SampleImageTable」という名前でテーブルを作成します。

Localization Tables
  • Type: 「Asset Table Collection」
  • Name: 任意のテーブル名
  • 上記設定後、「Create」をクリック


テーブルの詳細を設定したら保存先を選択します。

Localization Tables

任意の場所に保存

これで画像ローカライズ用のテーブル作成は完了です。

各言語のローカライズ設定・編集

テーブルの作成が完了したらテーブルを編集していきます。
編集したいテーブルが表示されていない場合は「Selected Collection」で任意のテーブルを選択します。

Localization Tables

「Selected Collection」→「Asset Table」→ 任意のテーブル名


編集したいテーブルが表示されたら、ローカライズ設定をしていきます。

Localization Tables

「New Entry」をクリック


「Key」、「English(en)」、「Japanese(ja)」という3種類の入力エリアが表示されるのでそれぞれ入力していきます。

Localization Tables
  • Key: 任意のキー名を入力
  • English(en): ローカライズした英語の画像を設定
  • Japanese(ja): ローカライズした日本語の画像を設定

キー名は好きな名前でOKです。
これで言語ごとに別々の画像が表示される設定ができました。

これをローカライズしたい画像の分だけ作成していきます。
ローカライズ用のテーブル編集はこれで完了です。

ロケールデータの適用

ロケールデータが作成できたら実際に適用していきます。
このページではUI用のImageにアタッチしていきます。

Image Inspector

Imageコンポーネントを右クリック →「Localize」


「Localize Sprite Event」コンポーネントが自動的に追加されます。
「Localized Asset Reference」で作成したキーを選択して、このImageオブジェクトに設定します。

Localize Sprite Event
Localize Sprite Event

「Localized Asset Reference」→ 任意のキーを選択

これでTextMeshProへのアタッチが完了です。
この状態でUnityを実行して画像が言語ごとに切り替わるか確認してみます。

サンプル画像(日本語)
Sample Image (English)

右上のドロップダウンで言語切替ができます。

想定通り、言語ごとに設定した画像が表示されました。

スクリプトでロケール切替

言語ごとに画像の切替ができる状態になったので、最後にスクリプトから切り替えられるようにしていきます。
文字列のローカライズ時と同じスクリプトを利用します。

一応こちらにもスクリプトを記載しておきます。

using UnityEngine;
using UnityEngine.Localization.Settings;
using UnityEngine.Localization;
using UnityEngine.UI;

public class ToggleLocale : MonoBehaviour
{
    private Toggle toggle;
    private string localeKey;

    void Start()
    {
        toggle = GetComponent<Toggle>();
        localeKey = toggle.name;
        toggle.onValueChanged.AddListener(Change);
    }

    public async void Change(bool isOn)
    {
        if (isOn)
        {
            LocalizationSettings.SelectedLocale = Locale.CreateLocale(localeKey);

            //初期化のため待機
            await LocalizationSettings.InitializationOperation.Task;
        }
    }
}

簡略化するためにToggleのオブジェクト名に言語キーを設定しています。


Unityを実行してみます。

サンプル画像(日本語)
Sample Image (English)

Toggleを切り替えることで、画像も各言語に対応して切り替わりました。
以上で画像のローカライズ対応は完了です。

Localization - Unity マニュアル

その他の関連ページはこちら!

タイトルとURLをコピーしました