(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]



Steamの言語をUnityで取得する【Unity】【Steam】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.1f1


はじめに

今回はUnityで作ったゲームから、Steamで設定されている言語を取得する方法です!

イメージとしては以下のような感じ。

f:id:kan_kikuchi:20200706072133j:plain



Steamworks.NETの導入

まずプロジェクトにSteamworks.NETを導入するのですが、これをそのまま入れるより



Steamworks.NET-Exampleというサンプル付きのものを導入した方が色々便利です。



なお上記のGitHubからプロジェクトを取得したら、

f:id:kan_kikuchi:20200706064531j:plain


Assets以下を自分のプロジェクトへコピーするだけで導入は完了です。

f:id:kan_kikuchi:20191012075612j:plain



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()}");
f:id:kan_kikuchi:20200706072133j:plain


なお、Steamの言語設定は右上のアカウント詳細を選んだ先にある

f:id:kan_kikuchi:20200706072210j:plain


言語オプションから行います。

f:id:kan_kikuchi:20200706072218j:plain


また、SteamApps.GetCurrentGameLanguageで現在プレイ中のゲームの言語を取得する事も可能です。

Debug.Log($"SteamのUIで設定されている言語 : {SteamUtils.GetSteamUILanguage()}");
Debug.Log($"現在プレイ中のゲームの言語 : {SteamApps.GetCurrentGameLanguage()}");
f:id:kan_kikuchi:20200706073649j:plain


このゲームの言語はSteamPipeのデポにある

f:id:kan_kikuchi:20200729061315j:plain


ベース言語の管理から設定でき、

f:id:kan_kikuchi:20200729061336j:plain


ユーザは各ゲームのプロパティにある、

f:id:kan_kikuchi:20200729061218j:plain


言語の欄から変更可能です。(最初のインストール時にも設定出来たはず)

f:id:kan_kikuchi:20200729061234j:plain


ただし、ゲームの言語はゲーム側(プログラムで)変更する事が出来ないっぽいので、

ゲーム内で言語設定出来るようにする場合はベース言語の管理は設定しない方が楽かもしれません。


ちなみに各言語がどういう文字列かはAPI言語コードから確認できますが、

f:id:kan_kikuchi:20200706074514j:plain


Application.systemLanguageで取得出来る端末に設定されている言語とは

japaneseとJapanese、koreanaとKoreanというように微妙に違うので注意が必要です。