這裡是Photon營運事務局。這次將對Photon的功能,也就是自訂屬性(Custom properties)進行說明。
自訂屬性可關聯至房間或玩家,是雜湊表形式的暫時性參數。在建立房間或玩家時,可利用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 () { // 隨機進入房間(不過房間只有一個)
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 條評論
請登入寫評論。