多言語対応
さまざまな言語をサポートするために、ARSDK で提供する多言語サポート機能を使用できます。
多言語サポート要素
- UnitySignPOI
- UnityMapPOI
- UnityInfoPanel
AMapper 多言語設定
多言語機能を使用するには、AMapper プロジェクトでどの言語を使用するかを設定する必要があります。プロジェクトをロードした状態で ESC キーを押すと、Locale を選択できる画面が表示されます。Primary は言語のデフォルト値で、AMapper では左側のアイテムリストに表示される言語で、ARSDK ではデフォルトで使用される言語です。以下の例は、英語と日本語を使用する場合の設定です。

Locale を追加すると、SignPOI、MapPOI、InfoPanel アイテム編集時に右側の Editable 画面で言語別の Label 値を設定できます。

ARSDK 多言語設定
ARPlayground の Locale フィールドを活用すると、AMapper で設定した多言語データを読み込むことができます。

Inspector で設定した Locale 値は Unity Editor でのみ設定されます。実際のデバイスでは、Application.systemLanguage に基づいて Locale 値が自動的に設定されます。
Item Prefab 設定
ARPlayground は設定された Locale 値を基準に、*.amproj ファイルに設定された言語データを読み込みます。読み込んだ言語データは、UnitySignPOI、UnityMapPOI、UnityInfoPanel を作成するときにテキストフィールドに割り当てられます。
デフォルトで提供される UnitySignPOI、UnityMapPOI、UnityInfoPanel では、ユーザーが設定した言語が正常に表示されないことがあります。

この場合、各要素の Prefab を直接構成してから ItemGenerator に割り当てる必要があります。

Prefab 設定は基本的に以下の手順に従います。
-
UnitySignPOI、UnityMapPOIの場合/ARSDK/Core/Prefabs/ItemsパスのUnitySignPOI.prefabまたはUnitySignPOI.prefabをプロジェクトにコピー- コピーした Prefab 内の TextMeshPro 要素の Font Asset を変更
- Font Asset が変更された Prefab を ItemGenerator 内の
POIGeneratorコンポーネントに割り当て
-
UnityInfoPanelの場合/ARSDK/Core/Prefabs/ItemsパスのUnityInfoPanel.prefabをプロジェクトにコピー- コピーした Prefab 内の Text 要素の Font を変更
- Font が変更された Prefab を ItemGenerator 内の
InfoPanelGeneratorコンポーネントに割り当て
ランタイム言語設定
ARSDK は初期化時に Application.systemLanguage に基づいて Locale を自動的に検出し、言語データを読み込みます。ランタイムで言語を設定したい場合は、ARPlayground の Locale プロパティを使用できます。
m_ARPlayGround.locale = Locale.en_US;
ただし、任意の場所で上のように設定する場合、ARPlayground 内部のコード実行順序により、Locale 値が正常に適用されない可能性があります。Locale 値を正常に適用するには、locale を設定するコードが以下の 2 つの条件を満たす必要があります。
Awake()ライフサイクル内で実行される必要があります- コードを実行するクラスの
DefaultExecutionOrder値が-2000以下である必要があります
// ARPlayground の Awake イベントより前に実行されるように設定。
[DefaultExecutionOrder(-2000)]
public class ARSDKExample : MonoBehaviour {
[SerializeField]
private ARPlayGround m_ARPlayGround;
/* ... */
private void Awake()
{
// Locale を設定。
m_ARPlayGround.locale = Locale.en_US;
}
}