2015年5月4日月曜日

Photonでルーム内の人数を数える際について

それぞれのルーム内の人数を数えるのはかなり重要な要素だと思います。
落とし穴というほどではないのですが、ドキュメントをよく読まないと気づかない恐れのある項目が一つあったのでメモ
PhotonNetworkクラスにはもとから人数を取得できるプロパティが用意されています。

PhotonNetwork.countOfPlayersInRooms

で整数型のルーム内人数を取得できます。
しかし、このプロパティについてドキュメントを見てみると、

Count of users currently playing your app in some room (sent every 5sec by Master Server).

と書いてあり、5秒間に一度しか更新されていないことがわかります。
つまりこの値を参考にすると、非常に精度の悪い人数計算になってしまうわけです。

解決策というか、正しくカウントする方法の一つとして以下があります。

Roomクラスにある、

Room.playerCount

を利用することで現在入っているルーム内の人数を取得できます。

なお、Roomクラスインスタンスは生成時にstringのルーム名などが必要になります。
いちいち設定するのはメンドクサイと思うので、PhotonNetworkクラスのプロパティを使うことが出来ます。

例として以下のようになります。
public class ClassName : Photon.MonoBehaviour{
    Room room;
    int playerCount;

    void Start(){
        room = PhotonNetwork.room;
        playerCount = room.playerCount;
    }
}

0 件のコメント:

コメントを投稿

人気の投稿