Landinstelling op elk gewenst moment wijzigen

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Verificatieomgeving

Ramen
  • Voor Windows 11
Unity Editor
  • 2021.3.12f1
Invoersysteem (Unity Technologies)
  • 1.4.3
Lokalisatie (Unity Technologies)
  • 1.3.2

Vereisten voor deze tip

De volgende instellingen zijn vooraf gemaakt als uitgangspunt voor de beschrijving van deze tip.

Vereiste kennis en voorbereiding

In deze tip wordt uitgegaan van lokalisatie van de volgende tekst: Raadpleeg eerst de volgende tips om u voor te bereiden op het weergeven van gelokaliseerde tekst.

Knoppen plaatsen voor het wijzigen van landinstellingen

Als je het in de Unity Editor uitvoert, kun je de landinstelling in de rechterbovenhoek van het scherm wijzigen, maar na het bouwen van het spel heeft het die functie niet en moet je het zelf voorbereiden. Deze keer plaats ik een knop om te schakelen tussen de drie talen "Japans (ja)", "Engels (en)" en "Spaans (es)" en klik ik om ze te schakelen.

Scripting voor knoppen

Zorg ervoor dat de doelmethode wordt aangeroepen wanneer u op de knop klikt. Dit is een procedure voor algemeen gebruik, dus ik zal de details weglaten. Zie de volgende tips voor gedetailleerde instructies.

ButtonEvent Maak een script met de naam .

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()
  {
  }
}

Wijs elke methode toe aan een klik op de knop.

Landinstellingen afhandelen

Wijzig de code als volgt:

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");
  }
}

De wijziging zelf is eenvoudig en kan worden geschakeld door eenvoudig LocalizationSettings.SelectedLocale het doel Locale in de eigenschap in te stellen. Locale Locale.CreateLocale kan worden gemaakt door de naam van de landinstelling in de methode in te stellen.

Aangezien het landinstellingswijzigingsproces echter asynchroon is,LocalizationSettings.SelectedLocale betekent het volgende proces dat wordt ingesteld niet dat de landinstelling al volledig is overgeschakeld. Wees voorzichtig als u landinstellingsafhankelijke bewerkingen uitvoert.

Uitvoeren en verifiëren

Dit is alles wat er is, dus voer het alsjeblieft uit en controleer de beweging. In de rechterbovenhoek van het spelscherm kun je zien dat de verschillende bronnen dynamisch schakelen op dezelfde manier als wanneer je de landinstelling wijzigt.