FC2ブログ
    11 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 01

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【Unity】Excel使ってローカライズ試してみたんだが・・・・どうなんでしょかねorz 

    おはようございます。坂内です。
    だいぶ涼しくなってまいりました。
    過ごしやすい季節ですがな!

    現在あっぷるさんに申請だしているアプリは、ipadの時に広告がスゲー画面のど真ん中にでちゃうんでふざけんなってリジェクトされてます。
    ええ、ipadなんてありませんから、試しようがないんですよね テヘ
    ちくしょーーーー!!!!

    とりあえず10月入ったらipadの1を知り合いからもらう予定・・・・
    ちなみに今は、育成ゲーム作ってます。
    いくつか絵ができ次第、予約TOP10に出そうかなとは思ってます。

    で、今日の話題は、Excelファイルを使ってローカライズしてみよう?ってこと。
    ちなみにUnity4.6ベータ使い続けてます。

    色々と文字が多いアプリを作る際にめんどくさい(管理しやすいよう)にExcelファイルにて文字を管理しちゃいたいんですが、ローカライズはどうするの?って思った一瞬があったんですよね。
    で、色々考えたんですが、ここにたどり着きました。ってお話です。

    まずは、Excelが使えるように以下を落としてプロジェクトに入れちゃってください。
    http://tsubakit1.hateblo.jp/entry/20131010/1381411760
    こちら、テラシュールウェアさんのブログからです。テラさんスゲーよなーなんでも作っちゃうしー

    で、上記の準備ができたら、適当なローカライズ用クラスを作ります。
    using UnityEngine;
    using System.Collections;

    public class Localize : MonoBehaviour {

    const int LOCALIZE_EN = 0; // ENシート
    const int LOCALIZE_JA = 1; // JAシート

    public static int localize;

    void Awake () {
    if (Application.systemLanguage != SystemLanguage.Japanese) {
    localize = LOCALIZE_EN;
    }else{
    localize = LOCALIZE_JA;
    }
    }
    }

    んで、↓こんなエクセルをつくります。シートは「ENシート」と「JAシート」を作りました。
    ENシートには英語の文言、JAシートには日本語の文言が入ってます。
    エクセルのファイル名は「test.xls」にしました


    test.xlsをインポートします。
    インポートするときに、クラス名を決めます。
    今回はクラス名を「LocalizeData」とかにしときました。


    で、できあがったのがこちら。


    ScriptableObjectなるものが出来上がるらしいです。

    さてさて、お次はこいつを実際に使ってみます。


    とりあえずTextおいておきます。
    で、以下のLocalizeTestクラスを作ります。
    using UnityEngine;
    using UnityEngine.UI;
    using System.Collections;

    public class LocalizeTest : MonoBehaviour {

    public LocalizeData localizeData;

    void Start () {
    GameObject.Find("Text").GetComponent().text = localizeData.sheets[Localize.localize].list[0].title;
    }
    }

    ここでは、実際にローカライズしたデータを使用するコードを書いときます。
    localizeData.sheets[Localize.localize]
    のところで、先ほどのLocalizeで日本語なのか英語なのかのシート分けを行っています。
    今回は適当に、CanvasにこのLocalizeTestをつけました。


    んで、public LocalizeData localizeData;に当たるものには、先ほど作ったScriptableObjectをつけます。
    そのまま実行すると


    のように日本語が出ます。

    これ、Androidとかで英語にして実行するとちゃんと英語がでます。

    と、こんな感じでローカライズできるんですかね?
    でも、この方法だと1個1個のオブジェクトに対して無駄なコードを書いているような・・・・
    もっと簡単な方法ないんですかね!?

    ってところで、アデュ~ノシ

    Category: 開発日記(Unity)

    Thread: Unityゲーム制作

    Janre: コンピュータ

    Tag: Unity 
    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/140-f4e50eb7
    この記事にトラックバックする(FC2ブログユーザー)