このクラスは、クライアントが参加する/参加したルームを表します。 More...
Inherits RoomInfo.
Public Member Functions | |
Room (string roomName, RoomOptions options, bool isOffline=false) | |
指定された名前とプロパティ、およびパラメーターによって提供される「リストオプション」でルーム(表現)を作成します。 More... | |
virtual bool | SetCustomProperties (Hashtable propertiesToSet, Hashtable expectedProperties=null, WebFlags webFlags=null) |
このルームのカスタムプロパティを更新および同期します。オプションで、expectedPropertiesを条件として提供できます。 More... | |
bool | SetPropertiesListedInLobby (string[] lobbyProps) |
ルームを選択するためにすべてのプロパティが必要ではない場合、ロビーで使用可能なプロパティを定義できます。 More... | |
bool | SetMasterClient (Player masterClientPlayer) |
現在のルームのマスタークライアントとして別のプレイヤーを割り当てるようサーバーに要求します。 More... | |
virtual bool | AddPlayer (Player player) |
プレイヤーが既にルームのリストにあるかどうかを確認し、ない場合はStorePlayer()を呼び出します。 More... | |
virtual Player | StorePlayer (Player player) |
Players辞書内のプレイヤー参照を更新します(以前に存在したかどうかは関係ありません)。 More... | |
virtual Player | GetPlayer (int id) |
指定されたactorNumber(別名ID)を持つプレイヤーを見つけようとします。 IDはルームごとにのみ有効であるため、ルームにいるときにのみ役立ちます。 More... | |
bool | ClearExpectedUsers () |
サーバーのスロット予約リストから現在予想されるすべてのユーザーを削除しようとします。 More... | |
override string | ToString () |
このRoomインスタンスの概要を文字列として返します。 More... | |
new string | ToStringFull () |
このRoomインスタンスの概要を、カスタムプロパティを含む長い文字列として返します。 More... | |
Public Member Functions inherited from RoomInfo | |
override bool | Equals (object other) |
RoomInfoを(名前で)比較可能にします。 More... | |
override int | GetHashCode () |
名前のHashCodeを戻り値として使用して、Equalsを伴います。 More... | |
override string | ToString () |
最もインタレストの高いルームの値を文字列として返します。 More... | |
string | ToStringFull () |
カスタムプロパティを含む、最もインタレストの高いルームの値を文字列として返します。 More... | |
Properties | |
LoadBalancingClient | LoadBalancingClient [get, set] |
現在接続と状態を保持しているLoadBalancingClientへの参照。 More... | |
new string | Name [get, set] |
ルームの名前。ルーム/マッチの一意の識別子(リージョンおよび仮想appIDごと)。 More... | |
bool | IsOffline [get] |
new bool | IsOpen [get, set] |
ルームに参加できるかどうかを定義します。 More... | |
new bool | IsVisible [get, set] |
ルームがロビーにリストされるかどうかを定義します。 More... | |
new byte | MaxPlayers [get, set] |
このルームにプレーヤーの制限を設定します。このプロパティも同期され、ロビーに表示されます。 ルームがいっぱいの場合(players count == maxplayers)、このルームへの参加は失敗します。 More... | |
new byte | PlayerCount [get] |
このルームのプレーヤーの数(this.Players.Countを使用)。 More... | |
Dictionary< int, Player > | Players [get] |
ルーム内にいる間、これはそのルームにいるプレイヤーのリストです。 More... | |
string[] | ExpectedUsers [get] |
このルームに参加する予定のユーザーのリスト。マッチメイキングでは、Photonはこれらの各ユーザーIDのスロットをMaxPlayersからブロックします。 More... | |
int | PlayerTtl [get, set] |
プレイヤーの生存時間。ユーザーがplayerlistから削除される(スロットを解放する)までに、プレイヤーが(切断または退席により)非アクティブになることができる時間。 More... | |
int | EmptyRoomTtl [get, set] |
生存時間。最後のプレイヤーが非アクティブになった後、ルームが使用可能になっている時間(およびサーバーメモリ内)。この時間が経過すると、ルームは永続化または破壊されます。 More... | |
int | MasterClientId [get] |
このルームのマスターであるプレイヤーのID(acterNumber、actorNumber)。 注:これは、現在のマスターがルームを出ると変わります。 More... | |
string[] | PropertiesListedInLobby [get] |
ロビーのRoomInfoにあるカスタムプロパティのリストを取得します。 このリストは、ルームを作成するときに定義され、後で変更することはできません。 比較:LoadBalancingClient.OpCreateRoom() More... | |
bool | AutoCleanUp [get] |
このルームがautoCleanUpを使用して、プレイヤーが離れたときにすべての(バッファーされた)RPCとインスタンス化されたGameObjectを削除するかどうかを取得します。 More... | |
bool | BroadcastPropertiesChangeToAll [get] |
Properties inherited from RoomInfo | |
Hashtable | CustomProperties [get] |
ルームのカスタムプロパティの読み取り専用「キャッシュ」。 Room.SetCustomPropertiesを介して設定します(RoomInfoクラスでは使用できません!)。 More... | |
string | Name [get] |
ルームの名前。ルーム/マッチの一意の識別子(AppId +ゲームバージョンごと)。 More... | |
int | PlayerCount [get] |
現在ルームにいるプレイヤーの数。このプロパティは、Roomクラス(ルームにいるときに使用)によって上書きされます。 More... | |
byte | MaxPlayers [get] |
このルームのプレイヤーの制限。このプロパティはロビーにも表示されます。 ルームがいっぱいの場合(players count == maxplayers)、このルームへの参加は失敗します。 More... | |
bool | IsOpen [get] |
ルームに参加できるかどうかを定義します。 これはロビーでのリスティングには影響しませんが、開いていないとルームへの参加は失敗します。 開いていない場合、ルームはランダムなマッチメイキングから除外されます。 レース条件により、試合は参加中であっても閉鎖される場合があります。 マスターに再接続して、別のマスターを見つけてください。 ルームをリストに表示させないようにするには、プロパティ「IsVisible」を使用します。 More... | |
bool | IsVisible [get] |
ルームがロビーにリストされるかどうかを定義します。 ルームは非表示に作成するか、非表示に変更できます。 ルームに参加できるかどうかを変更するには、openプロパティを使用します。 More... | |
Additional Inherited Members | |
Public Attributes inherited from RoomInfo | |
bool | RemovedFromList |
ロビーで使用され、リストに表示されなくなったルームをマークします(満室、終了、または非表示)。 More... | |
int | masterClientId |
マスタークライアントID(actorNumber)のバッキングフィールド。 ルームプロパティのサーバーおよびev leaveによって定義されます。 More... | |
Protected Attributes inherited from RoomInfo | |
byte | maxPlayers = 0 |
プロパティのバッキングフィールド。 More... | |
int | emptyRoomTtl = 0 |
プロパティのバッキングフィールド。 More... | |
int | playerTtl = 0 |
プロパティのバッキングフィールド。 More... | |
string[] | expectedUsers |
プロパティのバッキングフィールド。 More... | |
bool | isOpen = true |
プロパティのバッキングフィールド。 More... | |
bool | isVisible = true |
プロパティのバッキングフィールド。 More... | |
bool | autoCleanUp = true |
プロパティのバッキングフィールド。GamePropertyがtrueに設定されていない場合はfalse(そうでない場合は送信されません)。 More... | |
string | name |
プロパティのバッキングフィールド。 More... | |
string[] | propertiesListedInLobby |
プロパティのバッキングフィールド。 More... | |
このクラスは、クライアントが参加する/参加したルームを表します。
現在のプレイヤー、そのプロパティ、およびこのルームのプロパティのリストも含まれています。 ルームインスタンスには、変更可能なIsOpen、MaxPlayersなどの「よく知られた」プロパティがいくつかあります。 独自のカスタムプロパティは、ルームにいる間にSetCustomProperties()を使用して設定できます。
通常、このクラスは、ロジックと追加機能を備えたゲーム固有の実装で拡張する必要があります。
Room | ( | string | roomName, |
RoomOptions | options, | ||
bool | isOffline = false |
||
) |
指定された名前とプロパティ、およびパラメーターによって提供される「リストオプション」でルーム(表現)を作成します。
roomName | ルームの名前(サーバー上で実際に作成されるまでnullの場合があります) |
options | ルームのオプション。 |
|
virtual |
プレイヤーが既にルームのリストにあるかどうかを確認し、ない場合はStorePlayer()を呼び出します。
player | 新しいプレイヤー。IDで識別されます。 |
bool ClearExpectedUsers | ( | ) |
サーバーのスロット予約リストから現在予想されるすべてのユーザーを削除しようとします。
この操作は、新規/他のユーザーの参加と競合する可能性があることに注意してください。このクライアントがClearExpectedUsersを呼び出す前 または後に、予想されるユーザーのリストにユーザーを追加している可能性があります。
サーバーが正常な更新を送信すると、このルームのexpectedUsers値が更新されます。
内部:このメソッドは、ルームのExpectedUsersプロパティの設定をまとめます。
|
virtual |
指定されたactorNumber(別名ID)を持つプレイヤーを見つけようとします。 IDはルームごとにのみ有効であるため、ルームにいるときにのみ役立ちます。
id | 検索するID。 |
|
virtual |
このルームのカスタムプロパティを更新および同期します。オプションで、expectedPropertiesを条件として提供できます。
カスタムプロパティは、ルームのプレイヤーに対して同期される文字列キーと任意の 値のセットです。 OpJoinとOpCreateの応答にあるように、 クライアントがルームに入るときに利用できます。
カスタムプロパティは、(現在の)ルームまたはプレーヤー(そのルーム内)に関連しています。
両方のクラスは、現在のキー/値をローカルにキャッシュし、CustomPropertiesプロパティとして使用可能にします。 これはそれらを読むためだけに提供されています。 それらを設定/変更するには、メソッドSetCustomPropertiesを使用する必要があります。
クライアントはいつでも(ルームにいるとき)カスタムプロパティを設定できます。 最適な使用方法を整理するのはゲームロジック次第です。
SetCustomPropertiesは、新規または変更されたキー/値でのみ呼び出す必要があります。 これにより、トラフィックとパフォーマンスが低下します。
expectedPropertiesを定義しない限り、キー/値の設定は常に許可されます。 この場合、プロパティ設定クライアントはサーバーから新しい値を受信せず、代わりにSetCustomPropertiesの ローカルキャッシュを更新します。
expectedPropertiesを定義する場合、サーバープロパティキャッシュに同じ値を持つすべての expectedPropertiesが含まれていない場合、サーバーは更新をスキップします。 この場合、プロパティ設定クライアントはサーバーから更新を取得し、キャッシュされたキー/値を他の 全員とほぼ同時に更新します。
expectedPropertiesを使用する利点は、1つのクライアントのみが1つの既知の 値から別の値にキーを正常に設定できることです。 例:カスタムプロパティ「ownedBy」でアイテムを所有するストア。 最初は0です。 複数のプレーヤーがアイテムに到達すると、全員が「ownedBy」を0からactorNumberに変更しようとします。 expectedProperties {"ownedBy", 0}を条件として使用すると、最初にアイテムを獲得したプレイヤーが アイテムを取得します(他のプレイヤーは所有権の設定に失敗します)。
プロパティは、ターンベースゲームのゲーム状態(IsPersistent = trueを使用)で保存されます。
propertiesToSet | 変更されるカスタムプロパティのハッシュテーブル。 |
expectedProperties | 新しい値を設定するための条件として使用するキー/値をいくつか提供します。クライアントはルームにいなければなりません。 |
webFlags | このSetCustomProperties-operationがWebHooksに転送されるかどうかを定義します。クライアントはルームにいなければなりません。 |
bool SetMasterClient | ( | Player | masterClientPlayer | ) |
現在のルームのマスタークライアントとして別のプレイヤーを割り当てるようサーバーに要求します。
RaiseEventには、ルームのマスタークライアントにのみメッセージを送信するオプションがあります。 SetMasterClientは、これらのメッセージを取得するクライアントに影響します。
このメソッドは、サーバー上の操作を呼び出して、新しいマスタークライアントを設定しますが、これには往復がかかります。 成功した場合、このクライアントと他のクライアントはサーバーから新しいマスタークライアントを取得します。
SetMasterClientは、どの現在のマスタークライアントを新しいマスタークライアントに置き換えるかをサーバーに指示します。 何かが以前にマスタークライアントを切り替えると、失敗します。このエラーのコールバックはありません。 すべてのクライアントは、サーバーによって割り当てられた新しいマスタークライアントを取得する必要があります。
こちらのご確認ください: MasterClientId
masterClientPlayer | 次のマスタークライアントになるプレイヤー。 |
bool SetPropertiesListedInLobby | ( | string[] | lobbyProps | ) |
ルームを選択するためにすべてのプロパティが必要ではない場合、ロビーで使用可能なプロパティを定義できます。
ロビーのユーザーに送信するプロパティの量を制限して、速度と安定性を向上させます。
lobbyProps | ロビーに転送するカスタムルームプロパティ名の配列。 |
Players辞書内のプレイヤー参照を更新します(以前に存在したかどうかは関係ありません)。
player | ルームに挿入するPlayerインスタンス。 |
override string ToString | ( | ) |
このRoomインスタンスの概要を文字列として返します。
new string ToStringFull | ( | ) |
このRoomインスタンスの概要を、カスタムプロパティを含む長い文字列として返します。
|
get |
このルームがautoCleanUpを使用して、プレイヤーが離れたときにすべての(バッファーされた)RPCとインスタンス化されたGameObjectを削除するかどうかを取得します。
|
getset |
生存時間。最後のプレイヤーが非アクティブになった後、ルームが使用可能になっている時間(およびサーバーメモリ内)。この時間が経過すると、ルームは永続化または破壊されます。
|
get |
このルームに参加する予定のユーザーのリスト。マッチメイキングでは、Photonはこれらの各ユーザーIDのスロットをMaxPlayersからブロックします。
Photonの対応する機能は「スロット予約」と呼ばれ、ドキュメントページで見つけることができます。 次のメソッドで予想されるプレーヤーを定義します: LoadBalancingClient.OpCreateRoom, LoadBalancingClient.OpJoinRoom, LoadBalancingClient.OpJoinRandomRoom
|
getset |
ルームに参加できるかどうかを定義します。
これはロビーでのリスティングには影響しませんが、ルームが開いていないと参加は失敗します。 開いていない場合、ルームはランダムなマッチメイキングから除外されます。 レースの状況により、ユーザーが参加しようとしている間に見つかったマッチが終了する場合があります。 マスターに再接続して、別のマッチを探します。 ルームをリストしないようにするには、プロパティ「IsVisible」を使用します。
RoomInfoの一部として、これは設定できません。 ルーム(プレイヤーが参加した)の一部として、セッターはサーバーとすべてのクライアントを更新します。
|
getset |
ルームがロビーにリストされるかどうかを定義します。
ルームは非表示に作成するか、非表示に変更できます。 ルームに参加できるかどうかを変更するには、property:openを使用します。
RoomInfoの一部として、これは設定できません。 ルーム(プレイヤーが参加した)の一部として、セッターはサーバーとすべてのクライアントを更新します。
現在接続と状態を保持しているLoadBalancingClientへの参照。
|
get |
このルームのマスターであるプレイヤーのID(acterNumber、actorNumber)。 注:これは、現在のマスターがルームを出ると変わります。
|
getset |
このルームにプレーヤーの制限を設定します。このプロパティも同期され、ロビーに表示されます。 ルームがいっぱいの場合(players count == maxplayers)、このルームへの参加は失敗します。
RoomInfoの一部として、これは設定できません。 ルーム(プレイヤーが参加した)の一部として、セッターはサーバーとすべてのクライアントを更新します。
|
getset |
ルームの名前。ルーム/マッチの一意の識別子(リージョンおよび仮想appIDごと)。
サーバーによって設定された名前は変更できません。
|
get |
このルームのプレーヤーの数(this.Players.Countを使用)。
|
get |
ルーム内にいる間、これはそのルームにいるプレイヤーのリストです。
|
getset |
プレイヤーの生存時間。ユーザーがplayerlistから削除される(スロットを解放する)までに、プレイヤーが(切断または退席により)非アクティブになることができる時間。
|
get |
ロビーのRoomInfoにあるカスタムプロパティのリストを取得します。 このリストは、ルームを作成するときに定義され、後で変更することはできません。 比較:LoadBalancingClient.OpCreateRoom()
最初から設定されていないプロパティに名前を付けることができます。これらは、後で追加されるときにロビーと同期されます。