クイックスタートガイド
ノート: このガイドはバージョン 2020.3 以降の Unity を必要とします。
このガイドでは、ローカライズされたアセットと文字列を持つ簡単なプロジェクトの設定方法を紹介しています。以下の手順をステップ毎に説明しています。
Localization Settings を作成する
プロジェクトの Localization Settings は、1 つのアセットです。このアセットを作成するには、Edit > Project Settings > Localization を開いて Create をクリックしてください。
ロケールを作成する
ロケール は言語と任意の地域を表します。これには、通貨、カレンダー、ユーザーが追加するカスタムデータなどの追加的な情報を含めることもできます。
Locale Generator ウィンドウを開くには、Localization Settings (メニュー: Edit > Project Settings > Localization) を開き、Locale Generator ボタンをクリックしてください。
- 追加したいロケールの横にあるチェックボックスを選択します。
- Generate Locales を選択します。
- アセットの保存場所を選択します。 選択されたロケール毎に 1 つのアセットファイルが Unity によって作成されます。
デフォルトロケールを選択する
アプリケーションにデフォルトで使用させたいロケールが英語 (English/en) 以外の場合は、Locale Selectors を使用してデフォルトのロケールを選択します。これを行うには、以下の手順に従ってください。
- Specific Locale Selector フィールドを選択します。
- Locale Id フィールドのオブジェクトピッカーを選択します。
- デフォルトに設定したいロケールをダブルクリックします。
アプリケーションは、起動時および他のロケールが選択されていない時に、このロケールを使用します。 また、プロジェクトのロケールもデフォルトロケールに設定する必要があります。これは以下の手順で行ってください。
- Project Locale Identifier フィールドのオブジェクトピッカーを選択します。
- プロジェクトのロケールとして設定したいロケールをダブルクリックします。
一般的にはこのロケールがプロジェクトの開発に使用され、Localized Property Variants システムによって使用されます。
アセットのローカライゼーション
アセットのローカライズは様々な理由で行われます。例えば、異なる吹き替え (ナレーション) オーディオや音楽を再生したり、書かれたテキストを含むテクスチャ (標識など) を変更したい場合などです。Localization のシステムは Asset Table を使用してこれに対応しています。
以下は、アセットのテクスチャを特定のロケールの国旗に変更する手順です。
Asset Table Collection を作成する
まず始めに Asset Table を作成する必要があります。これを行うには、Localization Tables ウィンドウ (メニュー: Window > Asset Management > Localization Tables) を開いてください。
- Asset Tables ウィンドウで New Table Collection タブを選択します。
- どのロケール用にテーブルを生成するか選択します。
- Type ドロップダウンメニューで Asset Table Collection を選択します。
- Name フィールドにコレクション名を入力します。
- Create を選択し、アセットを生成するディレクトリを選択します。
スプライトをローカライズする
Localization システムを使用すると、シーンのコンポーネントを直接操作することができ、現在アクティブなロケールのコンポーネントに直接加えられた全ての変更が記録されます。これを行うには、まずプロジェクトを設定する必要があります。Localization Scene Controls ウィンドウ (メニュー: Window > Asset Management > Localization Scene Controls) を開いてください。 Asset Table フィールドに、作成したテーブルコレクションを設定してください。これで、選択した Asset Table 内に、全てのアセット変更が記録されるようになります。
Localization システムを使用すると、シーンのコンポーネントを直接操作することができ、現在アクティブなロケールのコンポーネントに直接加えられた全ての変更が記録されます。これを行うには、まずプロジェクトを設定する必要があります。Localization Scene Controls ウィンドウ (メニュー: Window > Asset Management > Localization Scene Controls) を開いてください。
- Asset Table フィールドで、テーブルコレクションを選択してください。
- 加えられた全てのアセット変更が、選択された Asset Table 内に記録されるようになりました。
Unity は、ローカライズされたアセットに複数の方法でアクセスできます。この例では Localized Property Variants システムを使用しているので、一切スクリプトを記述する必要はありません。
- シーンに UI Image コンポーネントを追加します (メニュー: GameObject > UI > Image.)。ノート: 画像を追加するためには、プロジェクトに Unity UI パッケージがインストールされている必要があります。
- Active Locale フィールドで English を選択してください。
Track Changes トグルをオンにしてください。
ロケール毎に、Source Image を変更してそのロケールの国旗を使用するようにします。
シーンを実行し、ゲームビューのロケール選択ドロップダウンメニューを使用して ロケール を変更します。全てが正しく設定されていれば、国旗が、Asset Table で割り当てられたスプライトに変更されます。
ゲームビューのメニューが表示されない場合は、Preferences ウィンドウ (メニュー: Edit > Preferences > Localization) で表示をオンにしてください。
ゲームビューのロケール選択メニュー を使用するとエディター上で素早く言語を変更することができます。これは Edit > Preferences > Localization から有効化/無効化できます。
スプライトを編集すると、その画像が自動的にローカライゼーションテーブルエントリーに接続されます。画像が添付されているゲームオブジェクトと同じゲームオブジェクトに添付されている Game Object Localizer コンポーネントがローカライゼーションテーブルエントリーを表示します。Game Object Localizer コンポーネント内では、テーブルエントリーを編集できるだけでなく、他のテーブルエントリーに接続することも可能です。
Asset Table Collection を開くと、新しいエントリーと、それに関連付けられたアセットが表示されます。ターブル内で変更を加えることも、Image コンポーネントおよび GameObject Localizer に直接変更を加えることもできます。
オーディオをローカライズする
Unity のコンポーネントには、直接変更を加えられないタイプのものもあります。この場合は、コンポーネントローカライザーを使用します。詳しくは Localized Property Variants を参照してください。 以下の例は、コンポーネントローカライザーを使用して、異なるロケールに異なるオーディオファイルを適用する方法を示すものです。
- Audio Source ゲームオブジェクトを追加します (メニュー: GameObject > Audio > Audio Source)。
Audio Source コンポーネントを右クリックして Localize を選択します。
Localize Audio Clip Event コンポーネント内で、Localized Asset Reference フィールドを展開します。
- Table Collection ドロップダウンメニューでアセットテーブルを選択します。
- Add Table Entry をクリックし、Entry Name を
National Anthem
に変更します。 各オーディオクリップを、対応する各ロケールのフィールド内にドラッグアンドドロップします。
文字列をローカライズする
文字列は、最も一般的にローカライズされる要素です。文字列には、静的なもの (内容が一切変化しないもの) と動的なもの (ゲームの現在の状態によって変化するテキストなど) があります。Localization システムは、String Table を使用して、静的文字列と動的文字列の両方に対応しています。
文字列のローカライズは、以下の手順で行えます。
- String Table Collection を作成します。
- 静的テキストをローカライズします。
- 動的テキストをローカライズします。
- String Table エントリーを使用する
String Table Collection を作成する
まず始めに、String Table を作成する必要があります。これを行うには、Localization TablesWindow (メニュー: Window > Asset Management > Localization Tables) を開いてください。
- Asset Tables ウィンドウで、New Table Collection タブ を選択してください。
- どのロケール用にテーブルを生成するかを選択し、Type ドロップダウンメニューから String Table Collection を選択して、コレクションに名前を付けます。
Create ボタンをクリックし、アセットを生成するディレクトリを選択してください。
静的テキストをローカライズする
Localization システムを使用すると、シーンのコンポーネントを直接操作することができ、現在アクティブなロケールのコンポーネントに直接加えられた全ての変更が記録されます。これを行うには、まずプロジェクトを設定する必要があります。Localization Scene Controls ウィンドウ (メニュー: Window > Asset Management > Localization Scene Controls) を開いてください。 String Table フィールドに、作成したテーブルコレクションを設定してください。これで、選択された String Table 内に、加えた全ての変更が記録されるようになります。
Unity は、ローカライズされた文字列に複数の方法でアクセスできます。この例では、Localized Property Variants システムを使用しているので、一切スクリプトを記述する必要がありません。
- シーンに TextMeshPro - Text コンポーネントを追加します (メニュー: GameObject > UI > Text - TextMeshPro)。 ノート: TextMeshPro を使用するには、プロジェクトに TextMeshPro パッケージがインストールされている必要があります。
- Active Locale フィールドで English を選択します。
Track Changes トグルをオンにしてください。
Text (テキスト) を “Hello” に変更します。
- ロケール毎に、Text (テキスト) を適切な翻訳テキストに変更します。必要に応じて Font の変更や Rect Transform プロパティの調整も行ってください。これらの変更は、Active Locale のみに適用されます。
ロケール | 翻訳 |
---|---|
English | Hello |
French | Bonjour |
Japanese | こんにちは |
Spanish | Hola |
動的テキストをローカライズする
Unity は Smart String を使用して動的テキストを生成することができます。以下の例は、複数のデータソースを使用して 1 つの文字列を生成する方法を示すものです。
- String Table を開きます (メニュー: Window > Asset Management > Localization Tables)。
- Add New Entry ボタンを選択し、新しいエントリーに名前を付けます。
- Smart オプションを有効にすることで、このエントリー Smart String としてマークします。この例は、Smart String リフレクション、グローバル変数、Plural 機能を使用して、以下のスクリプトから変数を出力します。
using UnityEngine;
public class Apples : MonoBehaviour
{
public int appleCount = 1;
}
以下の値を入力します。
ロケール | 翻訳 |
---|---|
English | {global.player-name} has {apple-component.appleCount:plural:an apple|{} apples} |
French | {global.player-name} a {apple-component.appleCount:plural:une pomme|{} pommes} |
Spanish | {global.player-name} tiene {apple-component.appleCount:plural:una manzana|{} manzanas} |
Japanese | {global.player-name}は{apple-component.appleCount}個のリンゴを持っています |
この例では、英語 (English)、フランス語 (French)、スペイン語 (Spanish) は全て 2 つの plural を使用しており、日本語 (Japanese) は plural を使用していないので値を挿入するだけで済みます。
String Table エントリーを使用する
UI テキスト要素をシーンに追加するには、GameObject > UI > Text を開きます。
- Text コンポーネントを右クリックして Localize オプションを選択してください。Unity によって Localize String コンポーネントが追加され、その添付先ゲームオブジェクト用に自動的に設定が調整されます。Text コンポーネントに含まれる文字列型の値で String Table にも含まれるものがある場合、これは Unity によって設定中に自動的に割り当てられます。それ以外の場合は、String Reference フィールドのポップアップを使用して値を割り当てることができます。先に作成したエントリーを String Reference に割り当てます。
- テキストと同じゲームオブジェクトに Apples コンポーネントを追加します。
- Local Variables フィールド内で Add (+) ボタンを押し、Object Reference を選択して Apples コンポーネントを Object Reference スロットにドラッグします。変数の名前を apple-component にします。
ノート: Apples コンポーネントが別のゲームオブジェクト上にある場合は、そのコンポーネントを、ゲームオブジェクト参照ではなくスロット内にドラッグするようにしてください。これを行うひとつの方法は、2 つの Inspector を開いて 1 つをテキストに固定し、一方の Inspector からもう一方へコンポーネントをドラッグすることです。
テキストと、2 つ目の引数 appleCount は設定されましたが、1 つ目の引数 {global.player-name} も設定する必要があります。
- Global Variables Group アセットを作成します (メニュー: Assets/Create/Localization/Global Variables Group)。
Variables リスト内で Add (+) を選択して新しい String 変数を作成します。これを
player-name
と名付けます。Localization のプロジェクト設定 (メニュー: Edit > Project Settings > Localization) を開きます。
- Smart Format Sources リスト (String Database/Smart Format/) を開き、Add (+) を選択して新しい Global Variables Source を作成します。Global Variables Source を、Sources リストの 2 番目の位置 (項目 List Formatter の下) にドラッグアンドドロップします。
Global Variables Source 内で Add (+) を選択して新しい項目を作成します。デフォルト名 “global” はそのままにします。これは Smart String {global.player-name} の中の最初の部分に使用される値です。Global Variables Source アセットをスロット内にドラッグします。これで Global Variables Source が設定されました。
Text ゲームオブジェクトの複製を作成し、Apple Count を異なる値に変更します。再生ボタンを押し、テキストがそれぞれ正しい plural の形式を使用していることを確認します。
ビルドのプレビューと設定を行う
ローカライズされたアセットをプレイヤーで使用するには、Addressables プレイヤーコンテンツをビルドする必要があります。これを行うには、Addressables ウィンドウ (メニュー: Window/Asset Management/Addressable Assets/Groups) 内で Build/New Build/Default Build Script を選択してください。Addressables ウィンドウは、ホストアセットを再パッケージする方法 (ローカルストレージあるいはリモートウェブサーバー経由など) の制御にも使用できます。