【Unity】PlayFabでランキング実装

2 min read読了の目安(約2400字

できるようになること

・匿名ログイン
・ランキングボードの作成
・ランキングへ送信
・ランキングの取得
などのランキング簡易実装

対象者

・PlayFab試してみたいけどちょっと面倒だから15分ぐらいで試せるものない?って方

この記事の動画

必要パッケージ

https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/unity3d/quickstart

コード

using PlayFab;
using PlayFab.ClientModels;
using System.Collections.Generic;
using UnityEngine;

public class PlayFabController : MonoBehaviour
{
    const string STATISTICS_NAME = "HighScore";

    void Start()
    {
        PlayFabClientAPI.LoginWithCustomID(
            new LoginWithCustomIDRequest { CustomId = "TestID", CreateAccount = true},
            result => Debug.Log("ログイン成功!"),
            error => Debug.Log("ログイン失敗"));
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            SubmitScore(400);
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            RequestLeaderBoard();
        }
    }

    void SubmitScore(int playerScore)
    {
        PlayFabClientAPI.UpdatePlayerStatistics(
            new UpdatePlayerStatisticsRequest
            {
                Statistics = new List<StatisticUpdate>()
                {
                    new StatisticUpdate
                    {
                        StatisticName = STATISTICS_NAME,
                        Value = playerScore
                    }
                }
            },
            result =>
            {
                Debug.Log("スコア送信");
            },
            error =>
            {
                Debug.Log(error.GenerateErrorReport());
            }
            );
    }


    void RequestLeaderBoard()
    {
        PlayFabClientAPI.GetLeaderboard(
            new GetLeaderboardRequest
            {
                StatisticName = STATISTICS_NAME,
                StartPosition = 0,
                MaxResultsCount = 10
            },
            result =>
            {
                result.Leaderboard.ForEach(
                    x => Debug.Log(string.Format("{0}位:{1} スコア{2}", x.Position + 1, x.DisplayName, x.StatValue))
                    );
            },
            error =>
            {
                Debug.Log(error.GenerateErrorReport());
            }
            );
    }
}

参考サイト

https://azure.microsoft.com/ja-jp/services/playfab/
https://qiita.com/_y_minami/items/9143502f465ad11ff2ca
https://zenn.dev/nekojoker/articles/38f1654ee254f482dfce

スタジオしまづ

https://fromalgorithm.jimdofree.com/