ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - Localization:使用言語を PlayerPrefs で保存する

初めに

 Localization には言語(Locale)を PlayerPrefs に保存する機能があります。本記事では、PlayerPrefs を用いた Locale の保存の仕方とそれを用いた使用言語の判定する方法について、まとめます。


PlayerPrefs Locale Selector

PlayerPrefs Locale Selector の使い方

 PlayerPrefs を用いた使用言語の保存には、PlayerPrefs Locale Selector を使います。

 Edit > Project Settings から Project Settings を開きます。そして、Localization を開き、Locale Selectors の + ボタンをクリックします。

 PlayerPrefs Locale Selector をクリックします。

 Locale Selectors に PlayerPrefs Locale Selector が追加されます。これで使用言語変更時に PlayerPrefs に使用言語が保存されるようになります。デフォルトでは Player Preference Key は "selected-locale" と表示されています。

使用言語の取得

 使用言語は次の方法で取得できます。

  • PlayerPrefs.GetString を用いて、Player Preference Key に保存された言語コードを取得する
  • LocalizationSettings.SelectedLocale を用いる

 PlayerPrefs の使い方は上の前提知識にあるリンク先にまとめております。そちらをご覧ください。

 LocalizationSettings.SelectedLocale を用いて、現在使用中の言語の Locale を取得できます。使うには名前空間に次の2つを追加する必要があります。

using UnityEngine.Localization;  //Localeを使うために追加
using UnityEngine.Localization.Settings;  //Localization.Settingsを使うために追加

(サンプル)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Localization;  //Localeを使うために追加
using UnityEngine.Localization.Settings;  //Localization.Settingsを使うために追加

public class LocalizationScript : MonoBehaviour
{
    void Start()
    {
        //現在の使用言語を取得. 型は Locale
        Locale locale = LocalizationSettings.SelectedLocale;

        //Player Preference Key に保存された言語コードを取得する, 保存されていない場合は現在使用中の言語返す
        //型は string
        string CurrentLocale = PlayerPrefs.GetString("selected-locale", locale.name);
        Debug.Log($"locale{locale.name}");
        Debug.Log($"PlayerPrefs:selected-locale{CurrentLocale}");
    }
}

(実行結果:日本語の場合)

最後に

  • 使用言語を PlayerPrefs で保存するには、Locale Selectors に PlayerPrefs Locale Selector が追加する
  • 使用言語を取得する方法は次の2つ
  1. Player Preference Key に保存された言語コードを取得する
  2. LocalizationSettings.SelectedLocale を用いる