Промяна на езиковата променлива по всяко време

Страницата се актуализира :
Дата на създаване на страница :

Среда за проверка

Уиндоус
  • Прозорци 11
Редактор на единство
  • 2021.3.12е1
Входна система (Unity Technologies)
  • 1.4.3
Локализация (Unity Technologies)
  • 1.3.2

Предпоставки за този съвет

Следните настройки са направени предварително като предпоставка за описанието на този съвет.

Предварителни знания и подготовка

Този съвет предполага локализация на следния текст: Първо, моля, вижте следните съвети, за да се подготвите за показване на локализиран текст.

Поставяне на бутони за промяна на езиковата променлива

Ако го стартирате в редактора на Unity, можете да промените локала в горния десен ъгъл на екрана, но след изграждането на играта, тя няма тази функция и трябва да я подготвите сами. Този път ще поставя бутон за превключване между трите езика "японски (ja)", "английски (en)" и "испански (es)" и ще кликна, за да ги превключа.

Скриптове за бутони

Уверете се, че целевият метод е извикан, когато щракнете върху бутона. Това е процедура с общо предназначение, така че ще пропусна подробностите. Вижте следните съвети за подробни инструкции.

ButtonEvent Създайте скрипт с името .

using UnityEngine;

public class ButtonEvent : MonoBehaviour
{
  /// <summary>Japanese (ja) ボタンをクリックしたとき。</summary>
  public void OnClickJa()
  {
  }

  /// <summary>English (en) ボタンをクリックしたとき。</summary>
  public void OnClickEn()
  {
  }

  /// <summary>Spanish (es) ボタンをクリックしたとき。</summary>
  public void OnClickEs()
  {
  }
}

Присвояване на всеки метод на щракване върху бутон.

Обработка на промените в езиковите променливи

Променете кода, както следва:

using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;

public class ButtonEvent : MonoBehaviour
{
  /// <summary>Japanese (ja) ボタンをクリックしたとき。</summary>
  public void OnClickJa()
  {
    LocalizationSettings.SelectedLocale = Locale.CreateLocale("ja");
  }

  /// <summary>English (en) ボタンをクリックしたとき。</summary>
  public void OnClickEn()
  {
    LocalizationSettings.SelectedLocale = Locale.CreateLocale("en");
  }

  /// <summary>Spanish (es) ボタンをクリックしたとき。</summary>
  public void OnClickEs()
  {
    LocalizationSettings.SelectedLocale = Locale.CreateLocale("es");
  }
}

Самата промяна е проста LocalizationSettings.SelectedLocale и може да се превключва чрез просто задаване на целта Locale в свойството. Locale Locale.CreateLocale може да се създаде чрез задаване на името на езиковата променлива в метода.

Тъй като обаче процесът на промяна на езиковата променлива е асинхронен, следващият процес, който задава, не означава,LocalizationSettings.SelectedLocale че езиковата променлива вече е напълно превключена. Бъдете внимателни, ако извършвате операции, зависими от локализацията.

Изпълнение и проверка

Това е всичко, което има, така че, моля, пуснете го и проверете движението. В горния десен ъгъл на екрана на играта можете да видите, че различните ресурси се превключват динамично по същия начин, както когато промените езиковата променлива.