JackMasaki’s blog

掲載した記事ネタや作ったアプリ、参加したイベントレポートなどを掲載します

PlayFabでGroupの取得をする

今回はUnityでのGroupの取得について書きます。

PlayFabの導入部分はこちら

jackmasaki.hatenablog.com


PlayFabにおけるGroupとは

Group機能というものがPlayFabに実装されています。これはゲームなどでギルドやクランなどの”特定の仲間で集まったグループ”にあたるものです。 PlayFabではEntity Groupsというシステム上にギルドを構築します。

Groupには例えばグループの作成、メンバーの追加、削除、役職の設定、招待などの機能があります。

詳しくは公式のGroup APIのドキュメントをみると何ができるかが書いてあります。

PlayFab Groups API


Groupの作成

Unityで取得するためのGroupを作成します。 PlayFabのGroupsからNEW GROUPを選択します。

f:id:JackMasaki:20180911000159p:plain

New Group画面ではそれぞれ次のものを入力します。

New Group
Group name グループの名前
Entity type 管理者にするPlayerのType
Entity ID 管理者にするPlayerのEntity ID

CREATE GROUPをするためにはすべて入力する必要があります。 Entity IDを入力するためには最低でも一人のPlayerが必要になります。

Entity typeで"title_player_account"を選択し、Entity IDにはPlayersの中からPlayerを選択し、Overview内のTitle player accountにあるPlayer ID(title)を入力します。

入力後CREATE GROUPを選択することでGroupを作成することができます。


Groupの取得

例えばUnityでGroupの名前を取得するには次のようなコードで取得します。

using PlayFab;
private void GetGroupData(){
    PlayFabGroupsAPI.GetGroup(new GetGroupRequest
    {
        Group = new PlayFab.GroupsModels.EntityKey() { Id = "****************" },
    }, result => 
    {
        var groupName = result.GroupName;
    }, error => Debug.Log(error.GenerateErrorReport()));
}

Idには作成したGroupのIDを入れます。これで指定したIdのGroupのデータを取得できます。 Group関係のものはPlayFabClientAPIではなくPlayFabGroupsAPIにあることに注意です。

GetGroup()で取得できるデータは次の通りです。

GetGroup() Result
Group PlayFab.GroupsModels型、IdとTypeを格納
GroupName Groupの名前
MemberRoleeId メンバーの初期RoleのID
AdminRoleId 管理者のID
Roles Roleと名前のDictionary
Created Groupを作成したサーバー上の日時
ProfileVersion Groupのバージョン

ログインしているPlayerの所属しているGroup一覧の取得

ログイン中のPlayerが所属しているGroup一覧を取得するにはListMembership()を使用し、例えば次のようなコードで取得します。

using PlayFab;
private void GetGroupData(){
    PlayFabGroupsAPI.ListMembership(new ListMembershipRequest(), result => 
    {
        var groupList = result.Groups;
    }, error => Debug.Log(error.GenerateErrorReport()));
}