|
|
@@ -0,0 +1,77 @@
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using UnityEngine;
|
|
|
+using UnityEngine.UI;
|
|
|
+
|
|
|
+public class ImageAutoLanguage : MonoBehaviour
|
|
|
+{
|
|
|
+ static LanguageEnum currentLanguageEnum = LanguageEnum.Chinese;
|
|
|
+ static HashSet<ImageAutoLanguage> imageAutoLanguages = new HashSet<ImageAutoLanguage>();
|
|
|
+ [SerializeField] LanguageImage[] languageImages = {};
|
|
|
+
|
|
|
+ private static bool inited = false;
|
|
|
+ public static void Init()
|
|
|
+ {
|
|
|
+ if (inited) return;
|
|
|
+ inited = true;
|
|
|
+ int id = PlayerPrefs.GetInt("Language", 0);
|
|
|
+ ChangeLanguage((LanguageEnum) id);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void ChangeLanguage(LanguageEnum languageEnum)
|
|
|
+ {
|
|
|
+ currentLanguageEnum = languageEnum;
|
|
|
+ PlayerPrefs.SetInt("Language", ((int)languageEnum));
|
|
|
+ foreach (var imageAutoLanguage in imageAutoLanguages)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ imageAutoLanguage.ApplyToImage();
|
|
|
+ } catch (Exception e) { Debug.LogError(e.Message); }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static LanguageEnum GetLanguage()
|
|
|
+ {
|
|
|
+ Init();
|
|
|
+ return currentLanguageEnum;
|
|
|
+ }
|
|
|
+
|
|
|
+ void Awake()
|
|
|
+ {
|
|
|
+ Init();
|
|
|
+ }
|
|
|
+
|
|
|
+ void Start()
|
|
|
+ {
|
|
|
+ imageAutoLanguages.Add(this);
|
|
|
+ ApplyToImage();
|
|
|
+ }
|
|
|
+
|
|
|
+ void OnDestroy()
|
|
|
+ {
|
|
|
+ imageAutoLanguages.Remove(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void ApplyToImage()
|
|
|
+ {
|
|
|
+ Image imageComp = GetComponent<Image>();
|
|
|
+ bool matched = false;
|
|
|
+ foreach (var languageImage in languageImages)
|
|
|
+ {
|
|
|
+ if (languageImage.language == currentLanguageEnum)
|
|
|
+ {
|
|
|
+ matched = true;
|
|
|
+ imageComp.sprite = languageImage.sprite;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!matched && languageImages.Length > 0) {
|
|
|
+ imageComp.sprite = languageImages[0].sprite;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+[Serializable]
|
|
|
+public class LanguageImage {
|
|
|
+ public LanguageEnum language;
|
|
|
+ public Sprite sprite;
|
|
|
+}
|