此處介紹關於使用Photon Unity Networking安裝遊戲內合作遊戲時,與等級相近的玩家進行配對的方法。首先將玩家的等級加以編組,並按組進行配對。此處舉一個簡單的例子,按照玩家的等級任意予以分組。
/// /// 將等級(level)更改為層級(rank) /// ///從等級取得層級 ///等級 string LevelToMatchRank (int level) { if (level <= 20) return "E"; if (level <= 40) return "D"; if (level <= 60) return "C"; if (level <= 80) return "B"; if (level <= 99) return "A"; if (level == 100) return "S"; return ""; }
接下來將等級、層級等連接玩家的參數設定於玩家的自訂屬性中。這次請將用戶名稱、等級、層級設定於自訂屬性中。
propeties = new Hashtable (){{"UserName", userName}, {"Level", ((int)levelValue).ToString()}, {"Rank", rank}, {"RoomName", roomName} };
製作房間時,請將層級置於房間的自訂屬性之中。進入房間時,請先確認房間的自訂屬性,僅讓相符者進入房間中。
/// <summary> /// 製作房間 /// </summary> /// <param name="properties">Properties.</param> public void CreateRoom (Hashtable properties) { RoomOptions roomOptions = new RoomOptions (); roomOptions.isVisible = true; roomOptions.isOpen = true; roomOptions.maxPlayers = 4; roomOptions.customRoomProperties = new Hashtable (){{"Rank", (string)properties["Rank"]} }; roomOptions.customRoomPropertiesForLobby = new string[] {"Rank"}; if (PhotonNetwork.GetRoomList ().Length == 0) { PhotonNetwork.CreateRoom ((string)properties ["RoomName"], roomOptions, null); return; } foreach (RoomInfo roomInfo in PhotonNetwork.GetRoomList()) { if (roomInfo.name != (string)properties ["RoomName"]) { PhotonNetwork.CreateRoom ((string)properties ["RoomName"], roomOptions, null); } else { isRoomEnabled = true; } } }
進入房間時,使其確認進入房間的玩家自訂屬性中的層級是否與房間自訂屬性的層級相符。
在此使用foreach,由上往下搜尋房間, 如果設定為隨機進行搜尋,會使它更有遊戲的感覺。
/// <summary> /// 製作房間 /// </summary> /// <param name="properties">Properties.</param> public void CreateRoom (Hashtable properties) { RoomOptions roomOptions = new RoomOptions (); roomOptions.isVisible = true; roomOptions.isOpen = true; roomOptions.maxPlayers = 4; roomOptions.customRoomProperties = new Hashtable (){{"Rank", (string)properties["Rank"]} }; roomOptions.customRoomPropertiesForLobby = new string[] {"Rank"}; if (PhotonNetwork.GetRoomList ().Length == 0) { PhotonNetwork.CreateRoom ((string)properties ["RoomName"], roomOptions, null); return; } foreach (RoomInfo roomInfo in PhotonNetwork.GetRoomList()) { if (roomInfo.name != (string)properties ["RoomName"]) { PhotonNetwork.CreateRoom ((string)properties ["RoomName"], roomOptions, null); } else { isRoomEnabled = true; } } }
像這樣利用房間的自訂屬性與玩家的自訂屬性,即可實現與等級相符的配對功能。。
評論
0 條評論
請登入寫評論。