Photon PUN刷新大厅房间列表
引言
在早些時候,我寫過一篇《使用Photon PUN創建簡單對戰游戲》的聯機教程,這篇教程只是很簡單的實現了更新房間、創建房間、加入房間的功能,其中還有很多的BUG,需要進行修復。最近因為要用到Photon PUN這個插件,所以又進行了一些探索,今天主要是針對更新房間這個操作進行進一步實現,如果想看原生的官方教程,可以查看Photon官網。
初始準備
前期的準備可以參考我之前的那篇文章,今天主要是針對房間更新這個BUG進行修復。為了有更好的聯機服務,我也向Photon的中國光子云申請了中國區APPid,申請官網
完成申請之后要更改一些東西,首先回到unity中,找到LoadBalancingClient.cs這個腳本,修改這一行的內容為
再更改固定地區為cn
在開始實現之前,我們先思考一下,大廳的房間列表更新一般會有哪幾種情況,我這里羅列了三種:
1.房主建好房間,但未開始游戲,此時別的玩家進入大廳需要更新房間列表,玩家可以進行準備
2.房主建好房間,已開始游戲,此時別的玩家進入大廳需要更新房間列表,玩家可以直接進入游戲
3.房主和玩家都退出房間,此時需要更新大廳房間列表
這三種并不代表所有情況,但是都需要一個功能,那就是隨時隨地更新房間列表,而不是當房間信息更新時進行更新,所以我們需要主動去觸發房間更新,然后獲取到列表里面,這里就引入了Photon PUN里面的一些新功能。在大廳界面,我們新建一個按鈕用來主動更新房間列表,然后為其綁定事件函數。
我們回到之前寫的加入或創建房間的回調事件中,進行一些修改,加入的時候設置了大廳類型
在創建房間的按鈕事件里,進行修改,添加兩個篩選的條件,可以理解為這個房間的自定義的參數,主要為了,Photon官方的解釋就是類似數據庫的篩選條件,可以更加精確地區分你的房間。這里我們隨便設置了兩個參數,參數的類型和命名由你自己定,注意命名不能以下面的方式進行。
public const string ELO_PROP_KEY = "C0";public const string MAP_PROP_KEY = "C1";/// <summary>/// 創建或加入房間按鈕/// </summary>public void joinOrCreateRoomBtn(){if (RoomnameInputField.text.Length <= 2){return;}LobbyPanel.SetActive(false);RoomOptions roomOptions = new RoomOptions { MaxPlayers = 4,IsOpen=true};//房間最大人數4人roomOptions.CustomRoomProperties = new ExitGames.Client.Photon.Hashtable { { ELO_PROP_KEY, 100 }, { MAP_PROP_KEY, "Map1" } };roomOptions.CustomRoomPropertiesForLobby = new string[] { ELO_PROP_KEY,MAP_PROP_KEY};PhotonNetwork.JoinOrCreateRoom(RoomnameInputField.text, roomOptions, default);RoomPanel.SetActive(true);}不能使用的命名參數:
ALTER
CREATE
DELETE
DROP
EXEC
EXECUTE
INSERT
INSERT INTO
MERGE
SELECT
UPDATE
UNION
UNION ALL
接下來我們寫一個獲取房間列表的函數和按鈕事件
/// <summary>/// 獲取到房間列表的函數,傳入sql大廳篩選參數/// </summary>/// <param name="sqlLobbyFilter"></param>private void GetCustomRoomList(string sqlLobbyFilter){//新建一個大廳類型,TypedLobby typedLobby = new TypedLobby("customSqlLobby", LobbyType.SqlLobby);bool isgetsuce=PhotonNetwork.GetCustomRoomList(typedLobby, sqlLobbyFilter);if (isgetsuce){Debug.Log("獲取房間列表成功");}else{Debug.Log("獲取失敗");}}public void UpdateRoomInfoBtn(){GetCustomRoomList("C1='Map1'");}如此,就可以進行主動刷新了。
但是,剛才講到房主未開始游戲時,玩家進去之后會有一個準備按鈕,但是如果房主已經開始游戲,此時就要切換成進入游戲按鈕,所以這里需要進行一些修改,會用到一個非常實用的功能,就是photon里面的哈希值設置,具體用法如下:
其實只要可以同時設置這個,就可以分發到其他玩家那里,對應的步驟也就簡單了,不過我這里建議滿四個人或者固定人數開始游戲比較好,如果沒有達到相應的人數,就不能開始游戲。當然也可以嘗試一下不滿人就加入,這里我技術水平有限,還遇到一些問題,需要后面再解決,有想法的大佬可以交流一下啊。需要項目源碼可以私聊我,我們一起交流一下。
總結
以上是生活随笔為你收集整理的Photon PUN刷新大厅房间列表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: myeclipse运行java项目_my
- 下一篇: 2019.11.27 阵列信号处理