こんにちは〜
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行目のものを増やせば何言語でも対応できます。
他に何か良い案あれば募集してます
それでは、またね〜
↓もしこの記事が参考になったら、下のいいねボタンを押していただけると非常に助かります!(ログイン不要)↓