- Home /
Steamworks.net / Unity C~ / Leaderboards
I know this has been asked in various forms but no one answers it, just points to documentation which for me (and others) is hopeless. I'm trying to convert my leaderboards over to Steam, I have acceptance and therefore a Steam APP_ID. I have the Steamwork.net api working, I can upload a score to a leaderboard. However I cannot read the leaderboard and cannot find a C# implementation that nails it...this really comes down to my inability to fully understand and convert the C++ examples such as spacewars. I'm pretty sure the code I have is doing the job and is downloading the leaderboards but I just can't find where they are, if I Debug.Log everything in sight it tells me the leaderboard name and ID, the number of entries, etc. etc. but I just can't find the data! So assume everything is declared ok, this is the code:
//get scores from leaderboard
public static void GetScores()
{
Debug.Log("Getting Scores");
if (!s_initialized)
{
UnityEngine.Debug.Log("Can't fetch leaderboard because isn't loaded yet");
failedToLoad = true;
}
else
{
Debug.Log("fetching scores from steam leaderboard(" + s_currentLeaderboard + ")");
SteamAPICall_t handle = SteamUserStats.DownloadLeaderboardEntries(s_currentLeaderboard, ELeaderboardDataRequest.k_ELeaderboardDataRequestGlobal, 1, 5);
OnLeaderboardScoresDownloadedCallResult.Set(handle);
print("SteamUserStats.DownloadLeaderboardEntries(" + s_currentLeaderboard + ", " + ELeaderboardDataRequest.k_ELeaderboardDataRequestGlobal + ", " + 1 + ", " + 5 + ") : " + handle);
}
}
/////////////////////////////
void OnLeaderboardScoresDownloaded(LeaderboardScoresDownloaded_t pCallback, bool bIOFailure)
{
Debug.Log("[" + LeaderboardScoresDownloaded_t.k_iCallback + " - LeaderboardScoresDownloaded] - " + pCallback.m_hSteamLeaderboard + " -- " + pCallback.m_hSteamLeaderboardEntries + " -- " + pCallback.m_cEntryCount);
int Num_Entries = pCallback.m_cEntryCount;
Debug.Log("Num_Entries" + Num_Entries);
m_SteamLeaderboardEntries = pCallback.m_hSteamLeaderboardEntries;
LeaderboardEntry_t LeaderboardEntry;
bool ret = SteamUserStats.GetDownloadedLeaderboardEntry(m_SteamLeaderboardEntries, 0, out LeaderboardEntry, null, 0);
Debug.Log("SteamUserStats.GetDownloadedLeaderboardEntry(" + m_SteamLeaderboardEntries + ", " + 0 + ", " + "out LeaderboardEntry" + ", " + null + ", " + 0 + ") : " + ret + " -- " + LeaderboardEntry);
if (ret)
{
//Here I would expect to do a loop of num_Entries extracting the data from an array but where is the data?!
Debug.Log("all ok");
Debug.Log(Num_Entries);
Debug.Log(LeaderboardEntry);
}
}
Hasn't anyone on these forums integrated S$$anonymous$$mworks.net previously??? Desperate for help!
Answer by abeldantas · Mar 24, 2020 at 02:10 AM
You must pass m_hSteamLeaderboardEntries into GetDownloadedLeaderboardEntry to get the data you're looking for