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;//老房主