この記事でのバージョン
Unity 2019.4.1f1
NPOI 2.2.1
はじめに
Steamの実績のディスプレイ名(名前)や説明はローカライズ可能ですが、
一個一個入力するのは結構大変です。
一括で設定する事も出来るのですが、
それにはVDFという聞き慣れない形式のファイルで必要になります。
という事で今回は以下のような
エクセルやスプレッドシートのデータからVDFファイルを変換するコードを書いたのでその紹介です。
なお、Steamの実績をUnityで実装する方法については以下の記事を参照の事。
NPOIの導入
まず、変換用コードの前にNPOIをUnityプロジェクトに導入します。
ちなみにNPOIとは以下のような物で、エクセルをUnity(C#)で扱うために使っています。
Officeのドキュメントの操作を行う事が出来るApache POI(Javaライブラリ)の.NET用に移植されたライブラリです。C#やVB.netでOfficeのドキュメントを作成・編集する事が出来ます。また、LicenceはApache 2.0です。
NPOIは以下のDownload packageからダウンロード出来ます。
なお、最新のバージョンだと上手く動かなかったので、2.2.1を使ってます。
ダウンロードしたファイルはnupkgですが、これをzipに変更するとそのまま解凍できます。
あとはlibの中にあるnet20というディレクトリをそのままUnityに移動すれば導入完了です。
AchievementLocalizedDataConverter
次は本題の変換用コードであるAchievementLocalizedDataConverterです。
スクリプトをEditor以下に作成し、
変換用のファイルAchievementLocalizedDataをAssets直下に置けば準備完了。
なお、AchievementLocalizedDataはxls形式のファイルで
シートに言語名、各シートにID、ディスプレイ名、説明を列挙する形式です。
ここで言うIDとはSteamで実績を登録した時に自動で付与される物で、
(ただし、2/0なら2_0のように/を_に変換する必要有り)
言語名はAPI言語コードの事です。(SystemLanguageとは微妙に文字列が違うので注意)
変換は上部のTools/Convert/Achievement Localized Dataを押すと実行出来ます。
変換後のVDFファイルはAssetsと同じ場所(Unityからは見えない)にあり、
これを実績のローカリゼーションで
有効にする言語を指定した後、アップロードすればローカライズ完了です。
なお、アップロードした際、送信結果のJSON(?)が表示されます。(successという基準があればOK)
また、実績のページに各言語が「完全にローカライズされています。」
と表示されている事でローカライズが上手く出来たか確認する事も出来ます。