それぞれのルーム内の人数を数えるのはかなり重要な要素だと思います。
落とし穴というほどではないのですが、ドキュメントをよく読まないと気づかない恐れのある項目が一つあったのでメモ
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 件のコメント:
コメントを投稿