LoginSignup
0
0

More than 1 year has passed since last update.

I2 Localization でスプライトをスクリプトから動的にローカライズ

Last updated at Posted at 2022-07-17

はじめに

I2 Localization とっても便利なローカライズのアセット。

スプライト、音声、フォントなど色々ローカライズ設定できる記事は見つかったが、実際にそれを言語切り替えする記事が見当たらなかったので書きました。

タームの設定などは公式ドキュメント(英語)を参照してください。

image.png

Type: Text を選択すると他の型でもローカライズ対応できます。

目次

  1. やり方
  2. 解説
  3. 最後に
  4. 参考文献

やり方

ImageLocalizeExt.cs
using UnityEngine;
using UnityEngine.UI;
using I2.Loc;

public static class ImageLocalizeExt
{
    public static void LocalizeSprite(this Image self, string term)
    {
        var localize = GetLocalizeComponet(self.gameObject);
        localize.Term = term;
    }
    private static Localize GetLocalizeComponet(GameObject targetGameObject)
    {
        if (targetGameObject.TryGetComponent<Localize>(out var localize))
        {
            return localize;
        }
        return targetGameObject.AddComponent<Localize>();
    }
}
SpriteText.cs
using UnityEngine;
using UnityEngine.UI;
using I2.Loc;

public class SampleLocalize: MonoBehaviour
{

    [SerializeField, TermsPopup] private string _term; //I2 Localizeで設定したタームを設定する

    [SerializeField] private Image _targetImage; //ローカライズしたい画像

  
    void Start()
    {
        _targetImage.LocalizeSprite(_term);
   
    }

}

SampleLocalizeはサンプルなので各自ローカライズしたいタイミングで _targetImage.LocalizeSprite(_term); を呼び出せば動的に変えられます。

解説

I2.Localizeのアセットに付属してるcomponent Localize をローカライズしたい画像のゲームオブジェクトにアタッチした後にスクリプトからタームを書き換えている。

最後に

ローカライズしてるスクリプトを見てみる感じ、Object型で管理してるのでもっと拡張性の高いものは作れそう。
本当はLocalizeコンポーネントを経由ではなく、直接画像のスプライト差し替えしたいができなかったので誰か知っている方がいれば教えていただけると幸いです。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0