2016年12月4日日曜日

[Unity] I2 Localization その4 〜 C#スクリプトからローカライズ文章を取得する方法

前回から引き続き、I2 Localizationの利用について書いていきます。
今回は、スクリプトからローカライズされた文章を取得する方法です。

Term(キー)を文字列で指定する方法

前回設定した、Term(キー)を使用します。一番簡単な方法は以下のように、Term(キー)を文字列で指定する方法です。しかし、この場合はTerm(キー)のタイプミスに注意して下さい。間違っていると、ローカライズされた文章は取得できません。
// Term(キー)を文字列で指定して取得する方法。タイポに注意!
string text1 = I2.Loc.ScriptLocalization.Get("Term Name");


Term(キー)をプロパティとしたスクリプトを生成し、それを利用する方法

スクリプトの書式は以下のようになります。
// ScriptLocalizationに登録されたプロパティを使用する方法。
string text2 = I2.Loc.ScriptLocalization.Term_Name;
が、事前準備として、Term(キー)をプロパティとするスクリプトを生成しなければなりません。

Unity Editorに戻って作業をします。Assets \ I2 \ Localization \ Resources \ I2Languages.prefabを選択して、インスペクターのToolsタブ > Scriptタブを選択します。
そうすると登録されているTerm(キー)が表示されます。(下図)

LSTools.jpg

プロパティとして登録したいものにチェックを入れて下さい。Allボタンを押すと、全てにチェックが入ります。選択が終わったら「Build Script with Selected Terms」ボタンを押して、スクリプトを生成させます。
Assets \ I2フォルダ直下に ScriptLocalization.csファイルが生成されていると思います。内容は以下のような感じになっています。
// ScriptLocalizationサンプル
namespace I2.Loc
{
    public static class ScriptLocalization
    {
        public static string ACDes_ItemApple        { get{ return Get ("ACDes ItemApple"); } }
        public static string ACDes_ItemChallenge        { get{ return Get ("ACDes ItemChallenge"); } }
        public static string ACDes_ItemClock        { get{ return Get ("ACDes ItemClock"); } }
        public static string ACDes_ItemInvincible       { get{ return Get ("ACDes ItemInvincible"); } }
これで、I2.Loc.ScriptLocalizationにドット(.)を付けて、Term(キー)を指定できるようになり、かつ、そのままローカライズされた文章を取得できます。Term(キー)を文字列で指定する方法よりもコンパイルチェック出来る点で安全です。なお、Term(キー)にスペースが含まれている場合、そこはアンダースコア(_)に置き換わります。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...