先日ローカライズについて書いたが、
どうもNGUIにはローカライズ機能があるらしい。
少しメモ。

スクリーンショット 2012-05-20 21.17.36

■NGUIのローカライズ

サンプルを見る限り、NGUIのローカライズは
大きく分けて3つのコンポーネントで提供している。

・Localization
・UILocalize

構造も非常にUnity的でシンプル。
NGUIの作者の事だからVerが上がる頃には
ローカライズをEditor拡張で出来るようにしてそうな気がする。

■Localizationコンポーネント

Localizationコンポーネントは、複数の言語を管理するコンポーネント。
このオブジェクトにローカライズの元となるテキストを登録し、実行時にランタイムで適応する。

コンポーネントは一つあれば良く、最初のシーンでロードしDontDestroyで残す物なんじゃないかと予測。

スクリーンショット 2012-05-20 21.26.14


登録するテキストはまるでINIファイルのようなフォーマットで、記入されている。

項目名(Key) = ローカライズ時のパラメータ(Param)

スクリーンショット 2012-05-20 21.29.02


■UILocalizeコンポーネント

UILocalizeコンポーネントは、Localizationコンポーネントの値を元に
UILabel・UISprite(あと多分音も)を差し替える。

使い方は簡単。
ローカライズしたいNGUIのウィジェットにUILocalizeを追加し、
Keyに上で設定した名前を指定するだけ。

UILabelなら文章の内容が、UISpriteならSpriteが指定した内容に変化。

スクリーンショット 2012-05-20 21.31.15

とても便利にローカライズできるけど、少しだけ気になるところがある。
画像ローカライズの指定をSpriteでやっているという事は、複数言語のテクスチャを1枚にまとめる必要があるということ。
なので、実際に使わないローカライズ部分も常にロードすることになるのではないかと。

言語によってAtlasのテクスチャをガっと差し替えるほうがスマートだと思うのだが、
何か、そうしない理由があるのだろうか。

まあ本当に画像の切替が必要な部分なんて一部だろうし、UILabelでローカライズすれば良いとも思える。
以前のアップデートでNGUIのフォント機能ががかなりコンパクト・高速化されたらしいし。

下の機能変更で、さらに高速化すたのかな。
【NGUIの新フォントシステムを試す】

■言語を切り替える

LanguageSelectionの内容を見る限り
Localization.instance.currentLanguageで言語を切り替えてるらしい。

if (Localization.instance != null)
{
  Localization.instance.currentLanguage = language;
}


車輪を量産するところだった。
機能を作る前にNGUIに特定の機能があるか確認する必要がありそうだ。

NGUIのアップデートが早すぎて追いつけない。
ブートキャンプビデオのメモ化が一段落ついたら、一旦全力で解析したほうが良いかも。