Photon運営事務局です。
今回はPhotonの機能であるカスタムプロパティについて解説します。
カスタムプロパティとは、ルームやプレイヤーに紐付けできるハッシュテーブル形式の一時的なパラメータです。
ルームやプレイヤーの作成時やSetCustomPropertiesメソッドを用いることでパラメータにセットすることが可能です。
カスタムプロパティを呼び出す際はcustomPropertiesメソッドを呼ぶことで利用可能です。
この時の戻り値はHashTable型となります。
それでは実際に利用してみましょう。
今回はPhoton Unity Networkingを用いルームのカスタムプロパティを利用しました。
なお、Photon Unity Networkingのバージョンは「v1.28.1」です。
using UnityEngine; using System.Collections; using Hashtable = ExitGames.Client.Photon.Hashtable; public class CustomPropertiesSample : Photon.MonoBehaviour { // カスタムプロパティを一時保存する private string text = ""; void Awake () { // Photon接続 PhotonNetwork.ConnectUsingSettings ("0.1"); } void OnDestory () { // Photon切断 PhotonNetwork.Disconnect (); } void OnJoinedLobby () { // ランダムに入室(でもルームは1つのみ) PhotonNetwork.JoinRandomRoom (); } void OnPhotonRandomJoinFailed () { // ランダムに入室失敗した場合、ルームを作成 // ルームオプションの作成 RoomOptions roomOptions = new RoomOptions (); roomOptions.isVisible = true; roomOptions.isOpen = true; roomOptions.maxPlayers = 4; roomOptions.customRoomProperties = new Hashtable (){{"CustomProperties", "カスタムプロパティ"} }; roomOptions.customRoomPropertiesForLobby = new string[] {"CustomProperties"}; // ルームの作成 PhotonNetwork.CreateRoom ("CustomPropertiesRoom", roomOptions, null); } void OnGUI () { // ルームにいる場合のみ if (PhotonNetwork.inRoom) { // ルームの状態を取得 Room room = PhotonNetwork.room; if (room == null) { return; } // ルームのカスタムプロパティを取得 Hashtable cp = room.customProperties; GUILayout.Label ((string)cp ["CustomProperties"], GUILayout.Width (150)); text = GUILayout.TextField (text, 100, GUILayout.Width (150)); // カスタムプロパティを更新 if (GUILayout.Button ("更新")) { cp ["CustomProperties"] = text; room.SetCustomProperties (cp); } } } }
37,38行目のようにルーム作成時にパラメータとしてHashtableとstring配列をセットする必要があります。
37行目のHashtableにはカスタムプロパティの要素を、38行目string配列にはロビーで利用するためにカスタムプロパティの名前を配列としてセットします。
40行目でルームが作成されるとすぐにカスタムプロパティを利用することが可能です。
54行目でルームのカスタムプロパティを取得し、Hashtableにセットしています。
55行目でHashtableの要素の”CustomPropeties”をLabelで表示しています。
そして60行目でルームのカスタムプロパティにセットします。
このように、Photonではとても簡単にルーム自体にプロパティを持たせることが可能となっています。
同様にPlayer自身にもプロパティを持たせることもできますので、ぜひご活用ください!
当記事は投稿時点のものです。
バージョンによっては利用できない可能性がありますのでご容赦ください。
コメント
0件のコメント
サインインしてコメントを残してください。