Photon Unity Networking: Photon.PunBehaviour Class Reference

Photon Unity Networking

Photon.PunBehaviour Class Reference

This class provides a .photonView and all callbacks/events that PUN can call. Override the events/methods you want to use. More...

Inherits Photon.MonoBehaviour, and IPunCallbacks.

Public Member Functions

virtual void OnConnectedToPhoton ()
 Called when the initial connection got established but before you can use the server. OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready. More...
 
virtual void OnLeftRoom ()
 Called when the local user/client left a room. More...
 
virtual void OnMasterClientSwitched (PhotonPlayer newMasterClient)
 Called after switching to a new MasterClient when the current one leaves. More...
 
virtual void OnPhotonCreateRoomFailed (object[] codeAndMsg)
 Called when a CreateRoom() call failed. The parameter provides ErrorCode and message (as array). More...
 
virtual void OnPhotonJoinRoomFailed (object[] codeAndMsg)
 Called when a JoinRoom() call failed. The parameter provides ErrorCode and message (as array). More...
 
virtual void OnCreatedRoom ()
 Called when this client created a room and entered it. OnJoinedRoom() will be called as well. More...
 
virtual void OnJoinedLobby ()
 Called on entering a lobby on the Master Server. The actual room-list updates will call OnReceivedRoomListUpdate(). More...
 
virtual void OnLeftLobby ()
 Called after leaving a lobby. More...
 
virtual void OnFailedToConnectToPhoton (DisconnectCause cause)
 Called if a connect call to the Photon server failed before the connection was established, followed by a call to OnDisconnectedFromPhoton(). More...
 
virtual void OnDisconnectedFromPhoton ()
 Called after disconnecting from the Photon server. More...
 
virtual void OnConnectionFail (DisconnectCause cause)
 Called when something causes the connection to fail (after it was established), followed by a call to OnDisconnectedFromPhoton(). More...
 
virtual void OnPhotonInstantiate (PhotonMessageInfo info)
 Called on all scripts on a GameObject (and children) that have been Instantiated using PhotonNetwork.Instantiate. More...
 
virtual void OnReceivedRoomListUpdate ()
 Called for any update of the room-listing while in a lobby (PhotonNetwork.insideLobby) on the Master Server or when a response is received for PhotonNetwork.GetCustomRoomList(). More...
 
virtual void OnJoinedRoom ()
 Called when entering a room (by creating or joining it). Called on all clients (including the Master Client). More...
 
virtual void OnPhotonPlayerConnected (PhotonPlayer newPlayer)
 Called when a remote player entered the room. This PhotonPlayer is already added to the playerlist at this time. More...
 
virtual void OnPhotonPlayerDisconnected (PhotonPlayer otherPlayer)
 Called when a remote player left the room. This PhotonPlayer is already removed from the playerlist at this time. More...
 
virtual void OnPhotonRandomJoinFailed (object[] codeAndMsg)
 Called when a JoinRandom() call failed. The parameter provides ErrorCode and message. More...
 
virtual void OnConnectedToMaster ()
 Called after the connection to the master is established and authenticated but only when PhotonNetwork.autoJoinLobby is false. More...
 
virtual void OnPhotonMaxCccuReached ()
 Because the concurrent user limit was (temporarily) reached, this client is rejected by the server and disconnecting. More...
 
virtual void OnPhotonCustomRoomPropertiesChanged (Hashtable propertiesThatChanged)
 Called when a room's custom properties changed. The propertiesThatChanged contains all that was set via Room.SetCustomProperties. More...
 
virtual void OnPhotonPlayerPropertiesChanged (object[] playerAndUpdatedProps)
 Called when custom player-properties are changed. Player and the changed properties are passed as object[]. More...
 
virtual void OnUpdatedFriendList ()
 Called when the server sent the response to a FindFriends request and updated PhotonNetwork.Friends. More...
 
virtual void OnCustomAuthenticationFailed (string debugMessage)
 Called when the custom authentication failed. Followed by disconnect! More...
 
virtual void OnCustomAuthenticationResponse (Dictionary< string, object > data)
 Called when your Custom Authentication service responds with additional data. More...
 
virtual void OnWebRpcResponse (OperationResponse response)
 Called by PUN when the response to a WebRPC is available. See PhotonNetwork.WebRPC. More...
 
virtual void OnOwnershipRequest (object[] viewAndPlayer)
 Called when another player requests ownership of a PhotonView from you (the current owner). More...
 
virtual void OnLobbyStatisticsUpdate ()
 Called when the Master Server sent an update for the Lobby Statistics, updating PhotonNetwork.LobbyStatistics. More...
 
virtual void OnPhotonPlayerActivityChanged (PhotonPlayer otherPlayer)
 Called when a remote Photon Player activity changed. This will be called ONLY if PlayerTtl is greater than 0. More...
 
virtual void OnOwnershipTransfered (object[] viewAndPlayers)
 Called when ownership of a PhotonView is transfered to another player. More...
 

Additional Inherited Members

- Properties inherited from Photon.MonoBehaviour
PhotonView photonView [get]
 A cached reference to a PhotonView on this GameObject. More...
 
new PhotonView networkView [get]
 This property is only here to notify developers when they use the outdated value. More...
 

Detailed Description

This class provides a .photonView and all callbacks/events that PUN can call. Override the events/methods you want to use.

By extending this class, you can implement individual methods as override.

Visual Studio and MonoDevelop should provide the list of methods when you begin typing "override". Your implementation does not have to call "base.method()".

This class implements IPunCallbacks, which is used as definition of all PUN callbacks. Don't implement IPunCallbacks in your classes. Instead, implent PunBehaviour or individual methods.

Member Function Documentation

virtual void Photon.PunBehaviour.OnConnectedToMaster ( )
virtual

Called after the connection to the master is established and authenticated but only when PhotonNetwork.autoJoinLobby is false.

If you set PhotonNetwork.autoJoinLobby to true, OnJoinedLobby() will be called instead of this.

You can join rooms and create them even without being in a lobby. The default lobby is used in that case. The list of available rooms won't become available unless you join a lobby via PhotonNetwork.joinLobby.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnConnectedToPhoton ( )
virtual

Called when the initial connection got established but before you can use the server. OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready.

This callback is only useful to detect if the server can be reached at all (technically). Most often, it's enough to implement OnFailedToConnectToPhoton() and OnDisconnectedFromPhoton().

OnJoinedLobby() or OnConnectedToMaster() are called when PUN is ready.

When this is called, the low level connection is established and PUN will send your AppId, the user, etc in the background. This is not called for transitions from the masterserver to game servers.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnConnectionFail ( DisconnectCause  cause)
virtual

Called when something causes the connection to fail (after it was established), followed by a call to OnDisconnectedFromPhoton().

If the server could not be reached in the first place, OnFailedToConnectToPhoton is called instead. The reason for the error is provided as DisconnectCause.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnCreatedRoom ( )
virtual

Called when this client created a room and entered it. OnJoinedRoom() will be called as well.

This callback is only called on the client which created a room (see PhotonNetwork.CreateRoom).

As any client might close (or drop connection) anytime, there is a chance that the creator of a room does not execute OnCreatedRoom.

If you need specific room properties or a "start signal", it is safer to implement OnMasterClientSwitched() and to make the new MasterClient check the room's state.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnCustomAuthenticationFailed ( string  debugMessage)
virtual

Called when the custom authentication failed. Followed by disconnect!

Custom Authentication can fail due to user-input, bad tokens/secrets. If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual).

During development of a game, it might also fail due to wrong configuration on the server side. In those cases, logging the debugMessage is very important.

Unless you setup a custom authentication service for your app (in the Dashboard), this won't be called!

Parameters
debugMessageContains a debug message why authentication failed. This has to be fixed during development time.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnCustomAuthenticationResponse ( Dictionary< string, object >  data)
virtual

Called when your Custom Authentication service responds with additional data.

Custom Authentication services can include some custom data in their response. When present, that data is made available in this callback as Dictionary. While the keys of your data have to be strings, the values can be either string or a number (in Json). You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64.

Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... }

https://doc.photonengine.com/en/realtime/current/reference/custom-authentication

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnDisconnectedFromPhoton ( )
virtual

Called after disconnecting from the Photon server.

In some cases, other callbacks are called before OnDisconnectedFromPhoton is called. Examples: OnConnectionFail() and OnFailedToConnectToPhoton().

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnFailedToConnectToPhoton ( DisconnectCause  cause)
virtual

Called if a connect call to the Photon server failed before the connection was established, followed by a call to OnDisconnectedFromPhoton().

This is called when no connection could be established at all. It differs from OnConnectionFail, which is called when an existing connection fails.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnJoinedLobby ( )
virtual

Called on entering a lobby on the Master Server. The actual room-list updates will call OnReceivedRoomListUpdate().

Note: When PhotonNetwork.autoJoinLobby is false, OnConnectedToMaster() will be called and the room list won't become available.

While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify). The room list gets available when OnReceivedRoomListUpdate() gets called after OnJoinedLobby().

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnJoinedRoom ( )
virtual

Called when entering a room (by creating or joining it). Called on all clients (including the Master Client).

This method is commonly used to instantiate player characters. If a match has to be started "actively", you can call an PunRPC triggered by a user's button-press or a timer.

When this is called, you can usually already access the existing players in the room via PhotonNetwork.playerList. Also, all custom properties should be already available as Room.customProperties. Check Room.playerCount to find out if enough players are in the room to start playing.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnLeftLobby ( )
virtual

Called after leaving a lobby.

When you leave a lobby, CreateRoom and JoinRandomRoom automatically refer to the default lobby.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnLeftRoom ( )
virtual

Called when the local user/client left a room.

When leaving a room, PUN brings you back to the Master Server. Before you can use lobbies and join or create rooms, OnJoinedLobby() or OnConnectedToMaster() will get called again.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnLobbyStatisticsUpdate ( )
virtual

Called when the Master Server sent an update for the Lobby Statistics, updating PhotonNetwork.LobbyStatistics.

This callback has two preconditions: EnableLobbyStatistics must be set to true, before this client connects. And the client has to be connected to the Master Server, which is providing the info about lobbies.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnMasterClientSwitched ( PhotonPlayer  newMasterClient)
virtual

Called after switching to a new MasterClient when the current one leaves.

This is not called when this client enters a room. The former MasterClient is still in the player list when this method get called.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnOwnershipRequest ( object[]  viewAndPlayer)
virtual

Called when another player requests ownership of a PhotonView from you (the current owner).

The parameter viewAndPlayer contains:

PhotonView view = viewAndPlayer[0] as PhotonView;

PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer;

Parameters
viewAndPlayerThe PhotonView is viewAndPlayer[0] and the requesting player is viewAndPlayer[1].

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnOwnershipTransfered ( object[]  viewAndPlayers)
virtual

Called when ownership of a PhotonView is transfered to another player.

The parameter viewAndPlayers contains:

PhotonView view = viewAndPlayers[0] as PhotonView;

PhotonPlayer newOwner = viewAndPlayers[1] as PhotonPlayer;

PhotonPlayer oldOwner = viewAndPlayers[2] as PhotonPlayer;

void OnOwnershipTransfered(object[] viewAndPlayers) {} //

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonCreateRoomFailed ( object[]  codeAndMsg)
virtual

Called when a CreateRoom() call failed. The parameter provides ErrorCode and message (as array).

Most likely because the room name is already in use (some other client was faster than you). PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational.

Parameters
codeAndMsgcodeAndMsg[0] is a short ErrorCode and codeAndMsg[1] is a string debug msg.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonCustomRoomPropertiesChanged ( Hashtable  propertiesThatChanged)
virtual

Called when a room's custom properties changed. The propertiesThatChanged contains all that was set via Room.SetCustomProperties.

Since v1.25 this method has one parameter: Hashtable propertiesThatChanged.
Changing properties must be done by Room.SetCustomProperties, which causes this callback locally, too.

Parameters
propertiesThatChanged

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonInstantiate ( PhotonMessageInfo  info)
virtual

Called on all scripts on a GameObject (and children) that have been Instantiated using PhotonNetwork.Instantiate.

PhotonMessageInfo parameter provides info about who created the object and when (based off PhotonNetworking.time).

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonJoinRoomFailed ( object[]  codeAndMsg)
virtual

Called when a JoinRoom() call failed. The parameter provides ErrorCode and message (as array).

Most likely error is that the room does not exist or the room is full (some other client was faster than you). PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational.

Parameters
codeAndMsgcodeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonMaxCccuReached ( )
virtual

Because the concurrent user limit was (temporarily) reached, this client is rejected by the server and disconnecting.

When this happens, the user might try again later. You can't create or join rooms in OnPhotonMaxCcuReached(), cause the client will be disconnecting. You can raise the CCU limits with a new license (when you host yourself) or extended subscription (when using the Photon Cloud). The Photon Cloud will mail you when the CCU limit was reached. This is also visible in the Dashboard (webpage).

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonPlayerActivityChanged ( PhotonPlayer  otherPlayer)
virtual

Called when a remote Photon Player activity changed. This will be called ONLY if PlayerTtl is greater than 0.

Use 0. If true, the player is not gett...">PhotonPlayer.IsInactive to check a player's current activity state.

Example: void OnPhotonPlayerActivityChanged(PhotonPlayer otherPlayer) {...}

This callback has precondition: PlayerTtl must be greater than 0.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonPlayerConnected ( PhotonPlayer  newPlayer)
virtual

Called when a remote player entered the room. This PhotonPlayer is already added to the playerlist at this time.

If your game starts with a certain number of players, this callback can be useful to check the Room.playerCount and find out if you can start.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonPlayerDisconnected ( PhotonPlayer  otherPlayer)
virtual

Called when a remote player left the room. This PhotonPlayer is already removed from the playerlist at this time.

When your client calls PhotonNetwork.leaveRoom, PUN will call this method on the remaining clients. When a remote client drops connection or gets closed, this callback gets executed. after a timeout of several seconds.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonPlayerPropertiesChanged ( object[]  playerAndUpdatedProps)
virtual

Called when custom player-properties are changed. Player and the changed properties are passed as object[].

Since v1.25 this method has one parameter: object[] playerAndUpdatedProps, which contains two entries.
[0] is the affected PhotonPlayer.
[1] is the Hashtable of properties that changed.

We are using a object[] due to limitations of Unity's GameObject.SendMessage (which has only one optional parameter).

Changing properties must be done by PhotonPlayer.SetCustomProperties, which causes this callback locally, too.

Example:

void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) {
    PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer;
    Hashtable props = playerAndUpdatedProps[1] as Hashtable;
    //...
}
Parameters
playerAndUpdatedPropsContains PhotonPlayer and the properties that changed See remarks.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnPhotonRandomJoinFailed ( object[]  codeAndMsg)
virtual

Called when a JoinRandom() call failed. The parameter provides ErrorCode and message.

Most likely all rooms are full or no rooms are available.
When using multiple lobbies (via JoinLobby or TypedLobby), another lobby might have more/fitting rooms.
PUN logs some info if the PhotonNetwork.logLevel is >= PhotonLogLevel.Informational.

Parameters
codeAndMsgcodeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnReceivedRoomListUpdate ( )
virtual

Called for any update of the room-listing while in a lobby (PhotonNetwork.insideLobby) on the Master Server or when a response is received for PhotonNetwork.GetCustomRoomList().

PUN provides the list of rooms by PhotonNetwork.GetRoomList().
Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room).

Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking.

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnUpdatedFriendList ( )
virtual

Called when the server sent the response to a FindFriends request and updated PhotonNetwork.Friends.

The friends list is available as PhotonNetwork.Friends, listing name, online state and the room a user is in (if any).

Implements IPunCallbacks.

virtual void Photon.PunBehaviour.OnWebRpcResponse ( OperationResponse  response)
virtual

Called by PUN when the response to a WebRPC is available. See PhotonNetwork.WebRPC.

Important: The response.ReturnCode is 0 if Photon was able to reach your web-service. The content of the response is what your web-service sent. You can create a WebResponse instance from it. Example: WebRpcResponse webResponse = new WebRpcResponse(operationResponse);

Please note: Class OperationResponse is in a namespace which needs to be "used": using ExitGames.Client.Photon; // includes OperationResponse (and other classes)

The OperationResponse.ReturnCode by Photon is:

 0 for "OK"
-3 for "Web-Service not configured" (see Dashboard / WebHooks)
-5 for "Web-Service does now have RPC path/name" (at least for Azure)

Implements IPunCallbacks.

Online Documentation  -  Dashboard  -  Support Forum Exit Games GmbH