Ejemplo n.º 1
0
    /// <summary>
    /// 統計情報を更新する
    /// </summary>
    /// <param name="rankingName">ランキング名</param>
    /// <param name="value">更新する値</param>
    public void UpdatePlayerStatistics(string rankingName, int value)
    {
        // Playfabにログイン済みかを確認する
        if (PlayFabClientAPI.IsClientLoggedIn())
        {
            // 通信待ちでなかったら通信開始
            if (!waitConnect.GetWait(gameObject.name))
            {
                // 通信待ちに設定する
                waitConnect.AddWait(gameObject.name);

                // UpdatePlayerStatisticsRequestのインスタンスを生成
                var request = new UpdatePlayerStatisticsRequest
                {
                    Statistics = new List <StatisticUpdate> {
                        new StatisticUpdate {
                            StatisticName = rankingName, //ランキング名(統計情報名)
                            Value         = value,       // スコア(int)
                        }
                    }
                };
                Debug.Log($"統計情報名:" + rankingName + " Value:" + value);

                // スコア情報の更新
                Debug.Log($"スコア(統計情報)の更新開始");
                PlayFabClientAPI.UpdatePlayerStatistics(request,
                                                        OnUpdatePlayerStatisticsSuccess,
                                                        OnUpdatePlayerStatisticsFailure);
            }
        }
        else
        {
            Debug.Log("統計情報設定に失敗:PlayFabに未ログイン");
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// カタログデータの取得
    /// </summary>
    private void GetCatalogData()
    {
        // 通信タスク名はゲームオブジェクト+Catalog
        string taskName = gameObject.name + connectCatalogTaskName;

        if (!waitConnect.GetWait(taskName))
        {
            // 通信待ちに設定する
            waitConnect.AddWait(taskName);

            PlayFabClientAPI.GetCatalogItems(new GetCatalogItemsRequest()
            {
                CatalogVersion = CatalogName,
            }
                                             , result =>
            {
                Debug.Log("カタログデータ取得成功!");
                CatalogItems = result.Catalog;
                isCatalogGet = true;

                // 通信終了
                waitConnect.RemoveWait(taskName);
            }
                                             , error =>
            {
                Debug.Log(error.GenerateErrorReport());
                // 通信終了
                waitConnect.RemoveWait(taskName);
            });
        }
    }
    /// <summary>
    /// 仮想通貨の情報を取得
    /// </summary>
    public void GetUserVirtualCurrency()
    {
        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name))
        {
            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name);

            //GetUserInventoryRequestのインスタンスを生成
            var userInventoryRequest = new GetUserInventoryRequest();

            //インベントリの情報の取得
            Debug.Log($"仮想通貨の情報の取得開始");
            PlayFabClientAPI.GetUserInventory(userInventoryRequest, OnSuccessGet, OnErrorGet);
        }
    }
Ejemplo n.º 4
0
    /// <summary>
    /// プレイヤーデータの更新
    /// </summary>
    /// <param name="dataname">データ名</param>
    /// <param name="data">データ内容</param>
    public void SetPlayerData(string dataname, string data)
    {
        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name + dataname))
        {
            // 自分のID以外でユーザーデータを更新しようとしていたら止める
            if (nominationID != playFabLogin._PlayfabID && nominationID != default)
            {
                return;
            }

            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name + dataname);

            var change = new Dictionary <string, string>
            {
                { dataname, data }
            };
            PlayFabClientAPI.UpdateUserData(new UpdateUserDataRequest
            {
                Data = change, Permission = UserDataPermission.Public
            }, result =>
            {
                Debug.Log("ユーザーデータの更新に成功");

                // キーがまだない場合には作成
                if (!this.data.ContainsKey(dataname))
                {
                    UserDataRecord record = new UserDataRecord();
                    this.data.Add(dataname, record);
                }
                this.data[dataname].Value = data;

                // 通信終了
                waitConnect.RemoveWait(gameObject.name + dataname);
            }, error =>
            {
                Debug.Log(error.GenerateErrorReport());

                // 通信終了
                waitConnect.RemoveWait(gameObject.name + dataname);
            });
        }
    }
Ejemplo n.º 5
0
    /// <summary>
    /// PlayfabへUserName(DisplayName)を更新する。
    /// </summary>
    /// <param name="userName">変更したい名前</param>
    public void SetUserName(string userName)
    {
        // 取得した名前と同じだった場合は更新しない
        if (userName == DisplayName)
        {
            // 成功したことにする
            setNameResult = SETNAME_RESULT.SUCCESS;
            return;
        }
        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name))
        {
            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name);

            var request = new UpdateUserTitleDisplayNameRequest {
                DisplayName = userName
            };

            PlayFabClientAPI.UpdateUserTitleDisplayName(request, OnSuccess, OnError);

            // 成功した場合
            void OnSuccess(UpdateUserTitleDisplayNameResult result)
            {
                Debug.Log("SetDisplayName : success! " + result.DisplayName);
                DisplayName = result.DisplayName;
                // 通信終了
                waitConnect.RemoveWait(gameObject.name);

                setNameResult = SETNAME_RESULT.SUCCESS;
            }

            // 失敗した場合
            void OnError(PlayFabError error)
            {
                Debug.Log($"{error.Error}");
                // 通信終了
                waitConnect.RemoveWait(gameObject.name);

                setNameResult = SETNAME_RESULT.ERROR;
            }
        }
    }
Ejemplo n.º 6
0
    /// <summary>
    /// リーダーボードの取得
    /// </summary>
    /// <param name="rankingName">ランキング名</param>
    /// <param name="startPosition">何位以降のランキングを取得するか</param>
    /// <param name="maxResultsCount">何件ランキングを取得するか</param>
    private void GetLeaderboard(string rankingName, int startPosition, int maxResultsCount)
    {
        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name))
        {
            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name);

            // GetLeaderboardRequestのインスタンスを生成
            var request = new GetLeaderboardRequest
            {
                StatisticName   = rankingName,          //ランキング名(統計情報名)
                StartPosition   = startPosition,        //何位以降のランキングを取得するか
                MaxResultsCount = maxResultsCount       //ランキングデータを何件取得するか(最大100)
            };

            //ランキング(リーダーボード)を取得
            Debug.Log($"ランキング(リーダーボード)の取得開始");
            PlayFabClientAPI.GetLeaderboard(request, OnGetLeaderboardSuccess, OnGetLeaderboardFailure);
        }
    }
Ejemplo n.º 7
0
    /// <summary>
    /// インベントリの情報を取得
    /// </summary>
    private void GetUserInventory()
    {
        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name))
        {
            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name);

            //インベントリの情報の取得
            Debug.Log($"インベントリの情報の取得開始");
            PlayFabClientAPI.GetUserInventory(new GetUserInventoryRequest()
            {
            }, result =>
            {
                inventoryItems.Clear();
                // 通信終了
                waitConnect.RemoveWait(gameObject.name);

                //result.Inventoryがインベントリの情報
                Debug.Log($"インベントリの情報の取得に成功 : インベントリに入ってるアイテム数 {result.Inventory.Count}個");
                //インベントリに入ってる各アイテムの情報をログで表示
                foreach (ItemInstance item in result.Inventory)
                {
                    Debug.Log($"ID : {item.ItemId}, Name : {item.DisplayName}, ItemInstanceId : {item.ItemInstanceId}");
                    // ローカルに保存
                    inventoryItems.Add(item.ItemId, item);
                }
                // 取得済みフラグON
                isGet = true;
            }, error =>
            {
                // 通信終了
                waitConnect.RemoveWait(gameObject.name);
                Debug.LogError($"インベントリの情報の取得に失敗\n{error.GenerateErrorReport()}");
            });
        }
    }
Ejemplo n.º 8
0
    /// <summary>
    /// ログイン実行
    /// </summary>
    private void Login()
    {
        // 既にログイン済みだったのでIDを保存して終了
        if (PlayFabClientAPI.IsClientLoggedIn())
        {
            Debug.Log("PlayFabへログイン済み:IDをPlayFabLoginクラスへ保存します");
            PlayFabAuthenticationContext player = PlayFabSettings.staticPlayer;
            _playfabID = player.PlayFabId;
            return;
        }

        // 通信待ちでなかったら通信開始
        if (!waitConnect.GetWait(gameObject.name))
        {
            customID = LoadCustomID();
            var request = new LoginWithCustomIDRequest {
                CustomId = customID, CreateAccount = shouldCreateAccount
            };
            PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);

            // 通信待ちに設定する
            waitConnect.AddWait(gameObject.name);
        }
    }