SelectLanguage.cs 2.7 KB

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