今回はUnityにSteamworks APIを導入する手順を書きます。
事前作業
開発環境にもSteamクライアントをインストールして
Steamworks管理者アカウントか、「アプリのメタデータの編集」権限の付与されたアカウントを設定しておいてください。
(これをやってないとAPIの呼び出しができません)
Steamworks.NETのセットアップ
Unityの場合はSteamworks.NETを使います。
Steamworks.NETはアセットストアにもあったりしますが、
下記からunitypackageをダウンロードして
「Assets」→「Import Package」→「Custom Package」で導入した方が面倒がないです。
インポートしたらプロジェクトフォルダ直下にsteam_appid.txtを設置します。
ファイルの中にはAppID(数字)のみを記述します。
SteamManagerの導入
実はこれだけでは足りなくて、Steamworks.NET-ExampleからSteamManager.csを持ってくる必要があります。
(SteamStatsAndAchievements.csもあると便利です)
これをzipで入手・解凍したら上記csソースをプロジェクト内の分かりやすい場所に置きます。
コーディング
下記をusingに追加しておいてください。
using Steamworks;
プレイヤー名の取得
if (SteamManager.Initialized) { playerName = SteamFriends.GetPersonaName(); //Debug.Log(playerName); }
APIを叩く前にSteamManager.Initializedを呼び出して初期化します。
正しく初期化されたらtrueが返りますので、それを拾って後続処理を行うよう記述します。
以下のソースも同様です。
Statsの呼び出し
SteamUserStats.GetStat("xp", out m_xp);
第一引数はStatsのAPI名です。
(Web側で設定した名称です)
第二引数にoutで値を設定します。
Statsの書き込み
SteamUserStats.SetStat("xp", m_xp); bool bSuccess = SteamUserStats.StoreStats();
第一引数はStatsのAPI名です。
第二引数で書き込みたい値を設定します。
SteamUserStats.StoreStats();で実際に値を書き込む処理を行い、
成功したらtrueが返ってきます。
実績の獲得
if (m_nTotalNumWins >= 100) { SteamUserStats.SetAchievement("Winner"); }
実績の獲得条件が成立したら、SetAchievementを呼び出します。
引数に実績のAPI名を記述します。