PunBehaviour回調(diào)函數(shù)

PunBehaviour回調(diào)函數(shù) - 注意事項(xiàng)

按照Photon.PunBehaviour中的順序進(jìn)行的排序

是做筆記給自己用的,里面可能有很多不對(duì)的地方,希望能指出QuQ大感謝!

必須:繼承Photon.PunBehaviour腳本

我個(gè)人認(rèn)為,讓腳本繼承Photon.PunBehaviour,這個(gè)方法最好

所以所有需要書寫PUN回調(diào)函數(shù)的腳本,我們都讓它繼承自Photon.PunBehaviour,如下:

public class 類名 : Photon.PunBehaviour{}

然后我們寫回調(diào)函數(shù)時(shí),就這樣書寫(重寫方法):

public override void OnConnectedToMaster(){}

其實(shí)所有的PUN回調(diào)函數(shù)都是:當(dāng)什么什么時(shí),PUN會(huì)自動(dòng)調(diào)用所有繼承自MonoBehaviour的腳本中的什么方法。后面就不贅述了

注意:下面的所有主機(jī)、主服務(wù)器(Master),應(yīng)該都是說(shuō)的是Photon云

所有的主客戶端、房主(MasterClient),應(yīng)該都說(shuō)的是房間的主人


PunBehaviour回調(diào)函數(shù) - 列表

OnConnectedToPhoton()

初始連接建立后,但可以使用服務(wù)器之前調(diào)用。

OnLeftRoom()

當(dāng)本地用戶/客戶端離開(kāi)房間時(shí)調(diào)用。

OnMasterClientSwitched(PhotonPlayer newMasterClient)

當(dāng)離開(kāi)當(dāng)前主客戶端(房主)(MasterClient),切換到新的MasterClient后調(diào)用。

OnPhotonCreateRoomFailed(object[] codeAndMsg)

當(dāng)CreateRoom()方法調(diào)用失敗時(shí)調(diào)用。

參數(shù)codeAndMsg:codeAndMsg [0]是一個(gè)短的ErrorCode,codeAndMsg [1]是一個(gè)字符串調(diào)試msg。

OnPhotonJoinRoomFailed(object[] codeAndMsg)

當(dāng)JoinRoom()方法調(diào)用失敗時(shí)調(diào)用。

OnCreatedRoom()

當(dāng)這個(gè)客戶創(chuàng)建一個(gè)房間并加入它時(shí)調(diào)用。 同時(shí)OnJoinedRoom()(當(dāng)加入到房間時(shí))也將被調(diào)用。

OnJoinedLobby()

在加入到大廳的時(shí)候調(diào)用。

OnLeftLobby()

在離開(kāi)大廳時(shí)調(diào)用。

OnFailedToConnectToPhoton(DisconnectCause cause)

如果在連接建立之前,連接到Photon云失敗時(shí)調(diào)用,然后調(diào)用OnDisconnectedFromPhoton()(與Photon云斷開(kāi)連接)。

與OnConnectionFail()不同,OnConnectionFail()在現(xiàn)有連接失敗時(shí)調(diào)用。

cause:斷開(kāi)原因

OnDisconnectedFromPhoton()

從Photon云斷開(kāi)連接后調(diào)用。

OnConnectionFail(DisconnectCause cause)

當(dāng)某些事件導(dǎo)致連接失敗(建立之后)時(shí)調(diào)用,然后調(diào)用OnDisconnectedFromPhoton()(與Photon云斷開(kāi)連接)。

OnPhotonInstantiate(PhotonMessageInfo info)

當(dāng)使用PhotonNetwork.Instantiate實(shí)例化出來(lái)GameObject的時(shí)候,在這個(gè)被實(shí)例化出來(lái)的這個(gè)GameObject(和子物體)上的所有腳本調(diào)用。

OnReceivedRoomListUpdate()

當(dāng)大廳中的房間列表更新時(shí)(比如大廳中有人創(chuàng)建了一個(gè)新的房間)。

(PUN提供PhotonNetwork.GetRoomList()的獲取房間列表的方法。每個(gè)item都是一個(gè)RoomInfo,可能包括自定義屬性)

OnJoinedRoom()

當(dāng)加入到一個(gè)房間時(shí)。

OnPhotonPlayerConnected(PhotonPlayer newPlayer)

當(dāng)別的玩家連接進(jìn)入房間時(shí)調(diào)用。 此PhotonPlayer此時(shí)已經(jīng)添加到玩家列表中。

OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer)

當(dāng)別的玩家離開(kāi)房間時(shí)調(diào)用。 此PhotonPlayer此時(shí)已從玩家列表中刪除。

OnPhotonRandomJoinFailed(object[] codeAndMsg)

當(dāng)JoinRandom()方法調(diào)用失敗時(shí)調(diào)用。

OnConnectedToMaster()

在與主機(jī)(Photon云)的連接建立和驗(yàn)證后調(diào)用。(注意只有當(dāng)PhotonNetwork.autoJoinLobby為false時(shí),才會(huì)調(diào)用)

OnPhotonMaxCccuReached()

由于并發(fā)用戶(最大同時(shí)在線人數(shù))限制達(dá)到,該客戶端被服務(wù)器拒絕并斷開(kāi)連接時(shí)。

OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged)

當(dāng)房間的自定義屬性更改時(shí)調(diào)用。

參數(shù)propertiesThatChanged中包含通過(guò)Room.SetCustomProperties設(shè)置的所有內(nèi)容。

OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps)

當(dāng)玩家屬性更改時(shí)調(diào)用。 PhotonPlayer和被更改的屬性被傳遞為object []。

playerAndUpdatedProps[0]是受影響的PhotonPlayer

playerAndUpdatedProps[1]是改變的屬性的哈希表(Hashtable)

由于Unity的GameObject.SendMessage(只有一個(gè)可選參數(shù))的限制,我們正在使用一個(gè)object[]數(shù)組,來(lái)裝這個(gè)兩個(gè)條目。

更改屬性必須由PhotonPlayer.SetCustomProperties完成,這也導(dǎo)致本地回調(diào)。

OnUpdatedFriendList()

當(dāng)服務(wù)器將響應(yīng)發(fā)送到FindFriends請(qǐng)求并更新PhotonNetwork.Friends時(shí)調(diào)用。

OnCustomAuthenticationFailed(string debugMessage)

當(dāng)自定義身份驗(yàn)證失敗時(shí)調(diào)用。 隨后斷開(kāi)連接!

自定義認(rèn)證可能會(huì)由于用戶輸入錯(cuò)誤的令牌/密碼而失敗。

如果認(rèn)證成功,則不調(diào)用此方法。 實(shí)現(xiàn)OnJoinedLobby()或OnConnectedToMaster()(像往常一樣)。

OnCustomAuthenticationResponse(Dictionary data)

當(dāng)您的自定義身份驗(yàn)證服務(wù)響應(yīng)附加數(shù)據(jù)時(shí)調(diào)用。

自定義驗(yàn)證服務(wù)可以在其響應(yīng)中包含一些自定義數(shù)據(jù)。

OnWebRpcResponse(OperationResponse response)

當(dāng)對(duì)WebRPC的響應(yīng)可用時(shí),由PUN調(diào)用。 請(qǐng)參閱PhotonNetwork.WebRPC。

OnOwnershipRequest(object[] viewAndPlayer)

當(dāng)另一個(gè)玩家從您請(qǐng)求擁有PhotonView(當(dāng)前所有者)時(shí)調(diào)用。(應(yīng)該是:當(dāng)另一個(gè)玩家向你申請(qǐng),讓他成為房主時(shí)?)

參數(shù)viewAndPlayer包含:

PhotonView view = viewAndPlayer[0] as PhotonView;

PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer;

PhotonView是[0],PhotonPlayer是[1]

OnLobbyStatisticsUpdate()

當(dāng)主服務(wù)器發(fā)送大廳統(tǒng)計(jì)信息的更新,更新PhotonNetwork.LobbyStatistics時(shí)調(diào)用。

OnPhotonPlayerActivityChanged(PhotonPlayer otherPlayer)

玩家的活動(dòng)狀態(tài)更改時(shí)調(diào)用。

使用PhotonPlayer.IsInactive來(lái)檢查玩家當(dāng)前的活動(dòng)狀態(tài)。

這個(gè)回調(diào)有先決條件:PlayerTtl必須大于0。

OnOwnershipTransfered(object[] viewAndPlayers)

當(dāng)PhotonView的所有權(quán)(房主的權(quán)限)轉(zhuǎn)移給另一個(gè)玩家時(shí)調(diào)用。

參數(shù)viewAndPlayers包含:

PhotonView view = viewAndPlayers[0] as PhotonView;

PhotonPlayer newOwner = viewAndPlayers[1] as PhotonPlayer;//新房主

PhotonPlayer oldOwner = viewAndPlayers[2] as PhotonPlayer;//老房主

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容