내 응용 프로그램 (SteamWorks.NET 및 XNA 기반 C#으로 작성된 게임)에 리더 보드를 포함하려고합니다.Steamworks.NET에서 리더 보드를 만드는 방법?
스팀이 올바르게 초기화되었습니다. gamestart에
내가 전화 :
SteamAPICall_t hSteamAPICall = SteamUserStats.FindLeaderboard("Most active beta testers");
leaderboard_BetaTesters_ResultFindLeaderboard = Callback<LeaderboardFindResult_t>.Create(OnLeaderboardFindResult_BetaTesters);
I 전화)
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;
}
그리고 모든 업데이트에서 (사용 :
if (SystemLogic.SteamInitSuccessul()) SteamAPI.RunCallbacks();
는하지만, OnLeaderboardFindResult_BetaTesters이
를 호출되지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
추가 할 것은 한 가지입니다. 당신이 FindOrCreateLeaderboard (s_leaderboardName, ELeaderboardSortMethod.k_ELeaderboardSortMethodDescending, ELeaderboardDisplayType.k_ELeaderboardDisplayTypeNumeric) '같은 것을 사용할 수있는 리더를 만들 대신 FindLeaderboard'의'()' 당신이 인수 2로 제공 할 필요가 열거 목록 3은 여기 발견 : https://github.com/rlabrecque/Steamworks.NET/blob/d617ccdb85db1ca72af8c020e55196d7e03a53bf/Plugins/Steamworks.NET/autogen/SteamEnums.cs –
감사합니다. ICoso. 실례지만, UpdateScore()를 호출하기 전에 Init()가 끝나기를 기다려야합니까? –
@ChrisEmerson : 더 이상 증기로 작업하지는 않았지만 코드에서 알 수 있듯이 UpdateScore 메서드는 "s_initialized"가 true 일 때까지 아무 작업도 수행하지 않으며 FindLeaderboard 콜백이 트리거 될 때 (OnLeaderboardFindResult) true가됩니다. Init 메서드가 끝나면 비동기 "OnLeaderboardFindResult"콜백을 기다리고 있기 때문에 UpdateScore 메서드를 사용할 수 없습니다. bool 메서드를 추가하여 UpdateScore를 사용할 수 있는지 확인할 수 있습니다 (s_initialized 값이 true 인 경우). – ICoso