Photon Unity Networking === > 下記以外のメソッド、プロパティ、コールバックを使用したら自由に追加してください。 ###### tags: `Unity`, `Photon Unity Networking` PunTurnManager.cs をについてまとめる ### Overview ターンベース制ゲームを作るのに使えるクラス ### Documents [[Photon] ターンベースゲームデモ](https://doc.photonengine.com/ja-jp/pun/current/demos-and-tutorials/package-demos/rockpaperscissors-demo) [PunBehavior Class document](https://doc-api.photonengine.com/ja-jp/pun/current/class_photon_1_1_pun_behaviour.html) [PhotonPlayer Class document](https://doc-api.photonengine.com/ja-jp/pun/current/class_photon_player.html#adb4677870c9c5903527ce75dc0edba2b) [PhotonNetwork Class document](https://doc-api.photonengine.com/ja-jp/pun/current/class_photon_network.html) [Room Class document](https://doc-api.photonengine.com/ja-jp/pun/current/class_room.html#details) ### Basic flow ```graphviz digraph flaw{ user [label="ユーザー"] master [label="マスターサーバー", shape=octagon] lobby [label="ロビー", shape=box] room [label="ルーム", shape=box] game [label="ゲーム", shape=diamond] user -> master [] master -> lobby [] lobby -> room [] room -> game [] game -> game [] game -> master [] } ``` PhotonNetwork Class --- サーバー、ロビーを管理するクラス ### Methods #### Photonへ接続 ```csharp PhotonNetwork.ConnectUsingSettings(version); ``` #### ロビーに入室 ```csharp PhotonNetwork.JoinLobby(); ``` #### ルームを作成 ```csharp PhotonNetwork.CreateRoom(); ``` #### ランダムでルームに入室 ```csharp PhotonNetwork.JoinRandomRoom(); ``` #### ルームを退室 ```csharp PhotonNetwork.LeaveRoom(); ``` ### Callbacks #### Photonに接続時 ```csharp public void OnConnectedToMaster(){ } ``` #### Photonに接続失敗時 ```csharp public void OnDisconnectedFromPhoton(){ } ``` #### ロビーに入室時 ```csharp public void OnJoinedLobby(){ } ``` #### ルームを作成時 ```csharp public void OnCreatedRoom(){ } ``` #### ルームに入室時 ```csharp public void OnJoinedRoom(){ } ``` #### リモートプレイヤーが入室時 ```csharp public void OnPhotonPlayersConnected(PhotonPlayer newPlayer){ } ``` #### ルームを退室時 ```csharp public void OnLeftRoom(){ } ``` ### Properties #### ルームを数える ```csharp int PhotonNetwork.countOfRooms { get; } ``` #### マスターか調べる ```csharp bool PhotonNetwork.isMasterClient { get; } ``` ### プレイヤー名を取得 ```csharp string PhotonNetwork.playerName { get; } ``` PunTurnManager Class --- ターンベースゲームを管理するクラス 以下のコードを追加する ```csharp private PunTurnManager turnManager; void Start() { this.turnManager = this.gameObject.AddComponent<PunTurnManager>(); this.turnManager.TurnManagerListener = this; } ``` また、 Photon接続を次のように変更する ```csharp PhotonNetwork.ConnectUsingSettings(version); PhotonHandler.StopFallbackSendAckThred(); ``` ### Methods `PunTurnManager` クラスを継承する `MonoBehaviour` クラスを継承しているので書き換えで良い #### ターンを開始 マスターが開始させる ```csharp if(PhotonNetwork.isMasterClient) this.turnManager.BeginTurn(); ``` #### 行動を送信 ```csharp this.turnManager.SendMove(object move, bool finish); ``` ### Callbacks `IPunTurnManagerCallbacks` インターフェースを継承する。 なお、インターフェースに含まれるメソッドはすべて使用しなければならない。 #### ターンの開始時 ```csharp public void OnTurnBegins(int turn){ } ``` #### プレイヤーの行動時 ```csharp public void OnPlayerMove(PhotonPlayer player, int turn, object move){ } ``` #### プレイヤーの完了時 ```csharp public void OnPlayerFinished(PhotonPlayer player, int turn, object move){ } ``` #### ターンの完了時 ```csharp public void OnTurnCompleted(int turn){ } ``` #### ターンのタイムアウト時 ```csharp public void OnTurnTimeEnds(int turn){ } ``` ### Properties #### ターン数の取得 ```csharp int this.turnManager.Turn { get; } ``` PhotonPlayer Class --- プレイヤーを管理するクラス ### Methods ### Attributes #### ローカルプレイヤーか調べる ```csharp bool PhotonPlayer.isLocal ``` ### Properties Room Class --- ルームを管理するクラス ### Methods ### Properties #### ルームの最大人数を設定 ```csharp int PhotonNetwork.room.MaxPlayers { get; set; } ``` #### ルームの人数を取得 ```csharp int PhotonNetwork.room.PlayerCount { get; }
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up