SelectLanguage.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using UnityEngine;
  2. using UnityEngine.EventSystems;
  3. using UnityEngine.Localization.Settings;
  4. using UnityEngine.SceneManagement;
  5. public class SelectLanguage : MonoBehaviour, IPointerClickHandler
  6. {
  7. void Start()
  8. {
  9. var localizationSettings = LocalizationSettings.GetInstanceDontCreateDefault();
  10. // Use included settings if one is available.
  11. if (localizationSettings != null)
  12. {
  13. Debug.Log("Using included localization data...");
  14. return;
  15. }
  16. Debug.Log("Creating default localization data...");
  17. // Create our localization settings. If a LocalizationSettings asset has been created and configured in the editor then we can leave this step out.
  18. localizationSettings = ScriptableObject.CreateInstance<LocalizationSettings>();
  19. // Replace the default Locales Provider with something we can manage locally for the example
  20. var localesProvider = new LocalesProvider();
  21. localizationSettings.SetAvailableLocales(localesProvider);
  22. // Add the locales we support
  23. localesProvider.AddLocale(UnityEngine.Localization.Locale.CreateLocale(new UnityEngine.Localization.LocaleIdentifier("zh-CN")));
  24. localesProvider.AddLocale(UnityEngine.Localization.Locale.CreateLocale(new UnityEngine.Localization.LocaleIdentifier("en-US")));
  25. var startupSelectors = localizationSettings.GetStartupLocaleSelectors();
  26. startupSelectors.Clear();
  27. startupSelectors.Add(new SpecificLocaleSelector { LocaleId = "zh-CN" });
  28. // Listen to any Locale changed events
  29. localizationSettings.OnSelectedLocaleChanged += OnSelectedLocaleChanged;
  30. // Make this our new LocalizationSettings
  31. LocalizationSettings.Instance = localizationSettings;
  32. }
  33. static void OnSelectedLocaleChanged(UnityEngine.Localization.Locale newLocale)
  34. {
  35. Debug.Log("OnSelectedLocaleChanged: The locale just changed to " + newLocale.ToString());
  36. }
  37. public void OnPointerClick(PointerEventData eventData)
  38. {
  39. var availableLocales = LocalizationSettings.AvailableLocales;
  40. switch (name)
  41. {
  42. case "Chinese":
  43. LocalizationSettings.SelectedLocale = availableLocales.GetLocale("zh-CN");
  44. break;
  45. case "English":
  46. LocalizationSettings.SelectedLocale = availableLocales.GetLocale("en-US");
  47. break;
  48. }
  49. SceneManager.LoadScene("SceneMain");
  50. }
  51. }