PUN☀️三、服务器大厅、服务器房间
生活随笔
收集整理的這篇文章主要介紹了
PUN☀️三、服务器大厅、服务器房间
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 🟥 目標(biāo)
- 🟧 開發(fā)過程
- 1?? Unity界面
- 2?? 用戶名同步
- 3?? 點擊開始連接后,開始連接隱藏
- 🟨 服務(wù)器房間設(shè)置
- 🚩服務(wù)器房間屬性
🟥 目標(biāo)
1、點“開始連接”,進(jìn)入房間
2、將你的用戶名發(fā)送到PUN,實現(xiàn)同步
類似游戲中能看到其他用戶名字
3、點擊開始連接,開始連接隱藏,出現(xiàn)正在連接中的字樣。
🟧 開發(fā)過程
1?? Unity界面
a、界面
完成目標(biāo)中UI的設(shè)置與邏輯。代碼自行編寫。
b、腳本綁定
實現(xiàn)點擊“開始連接”,進(jìn)入房間。
- 開始連接按鈕,綁定 Launcher 腳本的 Skode_JoinRoom
2?? 用戶名同步
告訴PUN你的名字,用于后面進(jìn)行顯示。
- 下腳本掛載到任意物體上,給該腳本綁定輸入框
- 輸入框的OnEndEdit,綁定該腳本動態(tài)(Dynamic string)的SetPlayerName方法
3?? 點擊開始連接后,開始連接隱藏
注意:在連接服務(wù)器失敗OnDisconnected() 時,顯示開始連接和輸入名字:
Launcher最終代碼:
using UnityEngine; using Photon.Pun; using Photon.Realtime;public class Launcher : MonoBehaviourPunCallbacks {#region Parameters[Tooltip("連接服務(wù)器失敗后要顯示的物體")]public GameObject[] failedShow;//此客戶端的版本號。用戶之間通過gameVersion(允許你做出破壞性的改變)進(jìn)行隔離。string gameVersion = "1";[SerializeField][Tooltip("最大連接人數(shù)")]byte maxPlayersPerRoom = 4;bool isPressPlay = false;#endregion#region Mono CallBacksvoid Awake(){// 這確保我們可以在主客戶端和同一房間的所有客戶端上使用photonnet . loadlevel()自動同步它們的級別PhotonNetwork.AutomaticallySyncScene = true;}void Start(){ConnectServer();}#endregion#region Public Method//綁定到開始連接上:連接到服務(wù)器房間public void Skode_JoinRoom(){isPressPlay = true;//若還未連接服務(wù)器,則先連接服務(wù)器,再加入房間if (!PhotonNetwork.IsConnected)ConnectServer();elseLoadRoom();}#endregion#region Private Methods//連接到服務(wù)器void ConnectServer(){// 檢查是否連接了服務(wù)器if (!PhotonNetwork.IsConnected){//首先連接到光子在線服務(wù)器。PhotonNetwork.GameVersion = gameVersion;PhotonNetwork.ConnectUsingSettings();}}void LoadRoom(){PhotonNetwork.JoinRandomRoom();}void LoadScene(){PhotonNetwork.LoadLevel("Room for " + PhotonNetwork.CurrentRoom.PlayerCount);}#endregion#region Pun Callbacks// 連接服務(wù)器成功回調(diào)public override void OnConnectedToMaster(){if (isPressPlay)LoadRoom();}//連接服務(wù)器失敗回調(diào)public override void OnDisconnected(DisconnectCause cause){Debug.LogWarningFormat("OnDisconnected() was called by PUN with reason {0}", cause);for (int i = 0; i < failedShow.Length; i++){failedShow[i].SetActive(true);}}// 加入房間成功回調(diào)public override void OnJoinedRoom(){//主客戶端加載場景即可。其他客戶端進(jìn)入房間后,會自動加載主客戶端的場景if (PhotonNetwork.IsMasterClient)LoadScene();}//加入房間失敗回調(diào)public override void OnJoinRandomFailed(short returnCode, string message){Debug.Log("we failed to join a random room, maybe none exists or they are all full. No worries, we create a new room.");//創(chuàng)建房間后,會自動加入房間。從而觸發(fā)加入房間成功的回調(diào)。PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = maxPlayersPerRoom });}#endregion }🟨 服務(wù)器房間設(shè)置
那么,我們來想一下:
- 我們建好房間了,可想更改房間參數(shù),更改房間最大人數(shù),怎么辦呢?
- 以及更改了,有沒有回調(diào)啊?
- 加入隨即房間時,能不能自動篩選房間啊?
🚩服務(wù)器房間屬性
完成服務(wù)器房間屬性、自定義屬性的設(shè)置、更改。
大家還有什么問題,歡迎在下方留言!
如果你有 技術(shù)的問題 或 項目開發(fā)
都可以加下方聯(lián)系方式
和我聊一聊你的故事🧡
總結(jié)
以上是生活随笔為你收集整理的PUN☀️三、服务器大厅、服务器房间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android mysql 图片_and
- 下一篇: SPI、I2C、UART三种串行总线的原