NGUIでローカライズ
先日ローカライズについて書いたが、
どうもNGUIにはローカライズ機能があるらしい。
少しメモ。
■NGUIのローカライズ
サンプルを見る限り、NGUIのローカライズは
大きく分けて3つのコンポーネントで提供している。
・Localization
・UILocalize
構造も非常にUnity的でシンプル。
NGUIの作者の事だからVerが上がる頃には
ローカライズをEditor拡張で出来るようにしてそうな気がする。
■Localizationコンポーネント
Localizationコンポーネントは、複数の言語を管理するコンポーネント。
このオブジェクトにローカライズの元となるテキストを登録し、実行時にランタイムで適応する。
コンポーネントは一つあれば良く、最初のシーンでロードしDontDestroyで残す物なんじゃないかと予測。
登録するテキストはまるでINIファイルのようなフォーマットで、記入されている。
項目名(Key) = ローカライズ時のパラメータ(Param)
■UILocalizeコンポーネント
UILocalizeコンポーネントは、Localizationコンポーネントの値を元に
UILabel・UISprite(あと多分音も)を差し替える。
使い方は簡単。
ローカライズしたいNGUIのウィジェットにUILocalizeを追加し、
Keyに上で設定した名前を指定するだけ。
UILabelなら文章の内容が、UISpriteならSpriteが指定した内容に変化。
とても便利にローカライズできるけど、少しだけ気になるところがある。
画像ローカライズの指定をSpriteでやっているという事は、複数言語のテクスチャを1枚にまとめる必要があるということ。
なので、実際に使わないローカライズ部分も常にロードすることになるのではないかと。
言語によってAtlasのテクスチャをガっと差し替えるほうがスマートだと思うのだが、
何か、そうしない理由があるのだろうか。
まあ本当に画像の切替が必要な部分なんて一部だろうし、UILabelでローカライズすれば良いとも思える。
以前のアップデートでNGUIのフォント機能ががかなりコンパクト・高速化されたらしいし。
下の機能変更で、さらに高速化すたのかな。
【NGUIの新フォントシステムを試す】
■言語を切り替える
LanguageSelectionの内容を見る限り
Localization.instance.currentLanguageで言語を切り替えてるらしい。
if (Localization.instance != null)
{
Localization.instance.currentLanguage = language;
}
車輪を量産するところだった。
機能を作る前にNGUIに特定の機能があるか確認する必要がありそうだ。
NGUIのアップデートが早すぎて追いつけない。
ブートキャンプビデオのメモ化が一段落ついたら、一旦全力で解析したほうが良いかも。