シンプルに多言語に対応してみる

こんにちは〜

webで、「unity 多言語対応」と検索すると、結構いろんなサイト出てくるんですよね。やはり対応させたい人は多いみたいで。

でも結構どのサイトも、アセットを使ったり、エクセルファイルを使って〜、みたいなものが多くて、取り入れるのが少し面倒くさい。。。

ということで、自分で簡単なものを思いついたので、それの紹介(メモ?)です!

先にコード書いておきますね。

using UnityEngine;
using UnityEngine.UI;

public class LanguageScript : MonoBehaviour {

	public static string Language = "Japanese";

	Text ThisText;

	[Header("Language")]
	public string JapaneseText = "";

	public string EnglishText = "";

	public void OnEnable () {
		if (ThisText == null) {
			ThisText = this.GetComponent<Text>();
			ThisText.tag = "Text";
		}
		if (Language == "Japanese") {
			if (JapaneseText != "") {
				ThisText.text = JapaneseText;
			}
		} else if (Language == "English") {
			if (EnglishText != "") {
				ThisText.text = EnglishText;
			}
		}
	}

	public static void LanguageChange (string Lan) {
		Language = Lan;
		GameObject[] objects = GameObject.FindGameObjectsWithTag("Text");
		if (objects.Length > 0) {
			for (int i = 0; i < objects.Length; i++) {
				LanguageScript changer = objects[i].GetComponent<LanguageScript>();
				changer.OnEnable();
			}
		}
	}
}

これだけです。(笑)

ただ、多少使い方に注意点があるので、そちらを説明していきますね。

まず一つ目。

Edit -> Project Settings -> Tags & Layers のところの、Tags欄に「Text」を追加してください。これないとエラー吐きます。

あと18行目で察した人は察したでしょうが、このスクリプトを使用するTextはタグが固定されます。他のタグを使う予定の方は申し訳ないですけど使えません。

二つ目。

例外処置は一切してません。Textコンポーネントがないオブジェクトに付けてエラー出ても知りません。。。

以上。(あれ思ったより少ない?)

では使い方ですね。

◯まず多言語に対応させたいテキストuiにこのスクリプトを付けます。(add componet)

◯Japanese TextとEnglish Textが入力できるところができると思うので(枠小さいですけど・・・)そちらにそれぞれ入力します。

◯後は実行するだけです。

OnEnable が、このオブジェクトがアクティブになった時に呼ばれるので、実行すると勝手に呼ばれます。

あと言語変更したい場合は、外部からLanguageChange を呼べば良いだけです。

かなりシンプル。。。(笑)

ちなみに言語を増やしたい時は、11,13行目のものと、24~28行目のものを増やせば何言語でも対応できます。

他に何か良い案あれば募集してます

それでは、またね〜





↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です