日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Photon PUN刷新大厅房间列表

發(fā)布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Photon PUN刷新大厅房间列表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

在早些時候,我寫過一篇《使用Photon PUN創(chuàng)建簡單對戰(zhàn)游戲》的聯(lián)機(jī)教程,這篇教程只是很簡單的實現(xiàn)了更新房間、創(chuàng)建房間、加入房間的功能,其中還有很多的BUG,需要進(jìn)行修復(fù)。最近因為要用到Photon PUN這個插件,所以又進(jìn)行了一些探索,今天主要是針對更新房間這個操作進(jìn)行進(jìn)一步實現(xiàn),如果想看原生的官方教程,可以查看Photon官網(wǎng)。

初始準(zhǔn)備

前期的準(zhǔn)備可以參考我之前的那篇文章,今天主要是針對房間更新這個BUG進(jìn)行修復(fù)。為了有更好的聯(lián)機(jī)服務(wù),我也向Photon的中國光子云申請了中國區(qū)APPid,申請官網(wǎng)
完成申請之后要更改一些東西,首先回到unity中,找到LoadBalancingClient.cs這個腳本,修改這一行的內(nèi)容為

再更改固定地區(qū)為cn

在開始實現(xiàn)之前,我們先思考一下,大廳的房間列表更新一般會有哪幾種情況,我這里羅列了三種:
1.房主建好房間,但未開始游戲,此時別的玩家進(jìn)入大廳需要更新房間列表,玩家可以進(jìn)行準(zhǔn)備
2.房主建好房間,已開始游戲,此時別的玩家進(jìn)入大廳需要更新房間列表,玩家可以直接進(jìn)入游戲
3.房主和玩家都退出房間,此時需要更新大廳房間列表

這三種并不代表所有情況,但是都需要一個功能,那就是隨時隨地更新房間列表,而不是當(dāng)房間信息更新時進(jìn)行更新,所以我們需要主動去觸發(fā)房間更新,然后獲取到列表里面,這里就引入了Photon PUN里面的一些新功能。在大廳界面,我們新建一個按鈕用來主動更新房間列表,然后為其綁定事件函數(shù)。

我們回到之前寫的加入或創(chuàng)建房間的回調(diào)事件中,進(jìn)行一些修改,加入的時候設(shè)置了大廳類型

/// <summary>/// 當(dāng)成功連接該服務(wù)器/// </summary>public override void OnConnectedToMaster(){NamePanel.SetActive(true);//顯示名字面板StartInitPanel.SetActive(false);//隱藏開始初始化面板TypedLobby typedLobby = new TypedLobby("customSqlLobby", LobbyType.SqlLobby);//設(shè)置當(dāng)前大廳類型為sqllobbyPhotonNetwork.JoinLobby(typedLobby);//加入大廳Debug.Log("加入大廳成功");}

在創(chuàng)建房間的按鈕事件里,進(jìn)行修改,添加兩個篩選的條件,可以理解為這個房間的自定義的參數(shù),主要為了,Photon官方的解釋就是類似數(shù)據(jù)庫的篩選條件,可以更加精確地區(qū)分你的房間。這里我們隨便設(shè)置了兩個參數(shù),參數(shù)的類型和命名由你自己定,注意命名不能以下面的方式進(jìn)行。

public const string ELO_PROP_KEY = "C0";public const string MAP_PROP_KEY = "C1";/// <summary>/// 創(chuàng)建或加入房間按鈕/// </summary>public void joinOrCreateRoomBtn(){if (RoomnameInputField.text.Length <= 2){return;}LobbyPanel.SetActive(false);RoomOptions roomOptions = new RoomOptions { MaxPlayers = 4,IsOpen=true};//房間最大人數(shù)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);}

不能使用的命名參數(shù):
ALTER
CREATE
DELETE
DROP
EXEC
EXECUTE
INSERT
INSERT INTO
MERGE
SELECT
UPDATE
UNION
UNION ALL

接下來我們寫一個獲取房間列表的函數(shù)和按鈕事件

/// <summary>/// 獲取到房間列表的函數(shù),傳入sql大廳篩選參數(shù)/// </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'");}

如此,就可以進(jìn)行主動刷新了。
但是,剛才講到房主未開始游戲時,玩家進(jìn)去之后會有一個準(zhǔn)備按鈕,但是如果房主已經(jīng)開始游戲,此時就要切換成進(jìn)入游戲按鈕,所以這里需要進(jìn)行一些修改,會用到一個非常實用的功能,就是photon里面的哈希值設(shè)置,具體用法如下:

//設(shè)置參數(shù) 我這里設(shè)置的是游戲是否已經(jīng)開始的一個參數(shù)ExitGames.Client.Photon.Hashtable MGameState = new ExitGames.Client.Photon.Hashtable();MGameState["gamestate"] = 1;//1代表游戲進(jìn)行中 0代表游戲未開始PhotonNetwork.CurrentRoom.SetCustomProperties(MGameState); //獲取參數(shù) if (PhotonNetwork.CurrentRoom.CustomProperties.ContainsKey("gamestate")){if ((int)(PhotonNetwork.CurrentRoom.CustomProperties["gamestate"]) == 1){readyBtn.SetActive(false);startBtn.SetActive(false);enterGameBtn.SetActive(true);}else{readyBtn.SetActive(true);startBtn.SetActive(false);enterGameBtn.SetActive(false);}print(PhotonNetwork.CurrentRoom.CustomProperties["gamestate"]); }

其實只要可以同時設(shè)置這個,就可以分發(fā)到其他玩家那里,對應(yīng)的步驟也就簡單了,不過我這里建議滿四個人或者固定人數(shù)開始游戲比較好,如果沒有達(dá)到相應(yīng)的人數(shù),就不能開始游戲。當(dāng)然也可以嘗試一下不滿人就加入,這里我技術(shù)水平有限,還遇到一些問題,需要后面再解決,有想法的大佬可以交流一下啊。需要項目源碼可以私聊我,我們一起交流一下。

總結(jié)

以上是生活随笔為你收集整理的Photon PUN刷新大厅房间列表的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。