この記事でのバージョン
Unity 2019.4.1f1
はじめに
今回はUnityで作ったゲームから、Steamで設定されている言語を取得する方法です!
イメージとしては以下のような感じ。
Steamworks.NETの導入
まずプロジェクトにSteamworks.NETを導入するのですが、これをそのまま入れるより
Steamworks.NET-Exampleというサンプル付きのものを導入した方が色々便利です。
なお上記のGitHubからプロジェクトを取得したら、
Assets以下を自分のプロジェクトへコピーするだけで導入は完了です。
Steamの言語の取得
次にSteamの言語の取得方法ですが、取得の前にSteamManager.Initializedを参照して初期化を行います。
なお、Steamを起動していない場合等はfalseになり初期化失敗です。
//SteamManager等を使うのに必要 using Steamworks;
//初期化 if (!SteamManager.Initialized) { Debug.LogWarning("SteamManagerの初期化に失敗しました"); return; }
本題のSteamで設定されている言語の取得にはSteamUtils.GetSteamUILanguageを使います。
//Steamで設定されている言語の取得 Debug.Log($"SteamのUIで設定されている言語 : {SteamUtils.GetSteamUILanguage()}");
なお、Steamの言語設定は右上のアカウント詳細を選んだ先にある
言語オプションから行います。
また、SteamApps.GetCurrentGameLanguageで現在プレイ中のゲームの言語を取得する事も可能です。
Debug.Log($"SteamのUIで設定されている言語 : {SteamUtils.GetSteamUILanguage()}"); Debug.Log($"現在プレイ中のゲームの言語 : {SteamApps.GetCurrentGameLanguage()}");
このゲームの言語はSteamPipeのデポにある
ベース言語の管理から設定でき、
ユーザは各ゲームのプロパティにある、
言語の欄から変更可能です。(最初のインストール時にも設定出来たはず)
ただし、ゲームの言語はゲーム側(プログラムで)変更する事が出来ないっぽいので、
ゲーム内で言語設定出来るようにする場合はベース言語の管理は設定しない方が楽かもしれません。
ちなみに各言語がどういう文字列かはAPI言語コードから確認できますが、
Application.systemLanguageで取得出来る端末に設定されている言語とは
japaneseとJapanese、koreanaとKoreanというように微妙に違うので注意が必要です。