私は自分のアプリケーション(SteamWorks.NETとXNAをベースにしたC#で書かれたゲーム)にリーダーボードを入れようとしています。Steamworks.NETのリーダーボードの操作方法は?
スチームが適切に初期化されています。
SteamAPICall_t hSteamAPICall = SteamUserStats.FindLeaderboard("Most active beta testers");
leaderboard_BetaTesters_ResultFindLeaderboard = Callback<LeaderboardFindResult_t>.Create(OnLeaderboardFindResult_BetaTesters);
static private void OnLeaderboardFindResult_BetaTesters(LeaderboardFindResult_t pCallback)
{
// See if we encountered an error during the call
if (pCallback.m_bLeaderboardFound == 0)
{
Warning.Happened("Leaderboard could not be found/accessed");
return;
}
else
{
Write.Text("Steam leaderboad connected");
}
leaderboard_BetaTesters = pCallback.m_hSteamLeaderboard;
}
、すべてのアップデートでを使用して()、私は呼ん:私は呼んgamestartオン
if (SystemLogic.SteamInitSuccessul()) SteamAPI.RunCallbacks();
はしかし、OnLeaderboardFindResult_BetaTestersが呼び出されることはありません。私は間違って何をしていますか?
追加することが1つあります。あなたは 'FindOrCreateLeaderboard(s_leaderboardName、ELeaderboardSortMethod.k_ELeaderboardSortMethodDescending、ELeaderboardDisplayType.k_ELeaderboardDisplayTypeNumeric)のようなものを使用することができるリーダーボードを作成したい、あなたは私がここで見つける引数2と3のように供給する必要がある列挙型の代わりに'の 'FindLeaderboard()' リスト: https://github.com/rlabrecque/Steamworks.NET/blob/d617ccdb85db1ca72af8c020e55196d7e03a53bf/Plugins/Steamworks.NET/autogen/SteamEnums.cs –
これは素晴らしいことです、ICoso。 Update()を呼び出す前にInit()が終了するのを待つべきですか? –
@ChrisEmerson: 私はもう蒸気で作業しませんでしたが、コードでわかるように、 "s_initialized"がtrueになるまでUpdateScoreメソッドは何も行いません。FindLeaderboardコールバックがトリガーされたとき(OnLeaderboardFindResult)になります。 Initメソッドが終了すると、非同期の "OnLeaderboardFindResult"コールバックを待機しているため、UpdateScoreメソッドはまだ使用できません。 必要に応じて、boolメソッドを追加してUpdateScoreが使用可能かどうかを確認できます(s_initializedの値がtrueの場合) – ICoso