Photon Unity Networking  v1.81
English | 日本語 | 한국
Classes | Enumerations | Functions
Public API

초기에 이해할 필요가 있는 가장 중요한 클래스들의 그룹 More...

Classes

interface  IPunObservable
 관찰 할 수 있는 스크립트들의 정확한 구현을 쉽게 하기 위하여 OnPhotonSerializeView 메소드를 정의 합니다. More...
 
interface  IPunCallbacks
 이 인터페이스는 OnPhotonSerializeView를 제외한 PUN 의 모든 콜백 메소드의 정의로 사용 됩니다. 오히려 개별적으로 구현 합니다. More...
 
class  Photon.PunBehaviour
 이 클래스는 .photonView 와 PUN 이 호출 할 수 있는 모든 콜백/이벤트들을 제공 합니다. 필요한 이벤트/메소드를 오버라이드하여 사용하세요. More...
 
struct  PhotonMessageInfo
 특정 메시지, RPC 또는 update 에 대한 정보의 컨테이너 클래스. More...
 
class  PhotonStream
 PhotonView 의 수신 데이터를 제공하거나 당신에게 제공하기 위해서 OnPhotonSerializeView() 에서 사용되는 컨테이너 입니다. More...
 
class  PhotonNetwork
 PhotonNetwork 플러그인을 사용하기 위한 메인 클래스. 이 클래스는 static 입니다. More...
 
class  PhotonPlayer
 actorID 로 식별되는 룸 내의 "플레이어"를 요약 합니다. More...
 
class  PhotonView
 네트워킹을 위한 PUN의 NetworkView 대체 클래스. NetworkView 와 같이 사용 합니다. More...
 
class  Room
 이 클래스는 PUN 이 참여하는(또는 참여했던) 룸과 유사합니다. "당신의" 룸을 폐쇄하고 숨길 수 있는 RoomInfo 의 프로퍼티들과는 대조적으로 프로퍼티들은 설정 가능 합니다. More...
 
class  RoomInfo
 로비에서 룸 목록에 사용되는 룸의 단순화 한 정보로 리스트와 참여시 필요 한 것 입니다. 프로퍼티는 설정 할 수 없습니다. (open, maxPlayers 등). More...
 

Enumerations

enum  PhotonNetworkingMessage {
  PhotonNetworkingMessage.OnConnectedToPhoton, PhotonNetworkingMessage.OnLeftRoom, PhotonNetworkingMessage.OnMasterClientSwitched, PhotonNetworkingMessage.OnPhotonCreateRoomFailed,
  PhotonNetworkingMessage.OnPhotonJoinRoomFailed, PhotonNetworkingMessage.OnCreatedRoom, PhotonNetworkingMessage.OnJoinedLobby, PhotonNetworkingMessage.OnLeftLobby,
  PhotonNetworkingMessage.OnDisconnectedFromPhoton, PhotonNetworkingMessage.OnConnectionFail, PhotonNetworkingMessage.OnFailedToConnectToPhoton, PhotonNetworkingMessage.OnReceivedRoomListUpdate,
  PhotonNetworkingMessage.OnJoinedRoom, PhotonNetworkingMessage.OnPhotonPlayerConnected, PhotonNetworkingMessage.OnPhotonPlayerDisconnected, PhotonNetworkingMessage.OnPhotonRandomJoinFailed,
  PhotonNetworkingMessage.OnConnectedToMaster, PhotonNetworkingMessage.OnPhotonSerializeView, PhotonNetworkingMessage.OnPhotonInstantiate, PhotonNetworkingMessage.OnPhotonMaxCccuReached,
  PhotonNetworkingMessage.OnPhotonCustomRoomPropertiesChanged, PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, PhotonNetworkingMessage.OnUpdatedFriendList, PhotonNetworkingMessage.OnCustomAuthenticationFailed,
  PhotonNetworkingMessage.OnCustomAuthenticationResponse, PhotonNetworkingMessage.OnWebRpcResponse, PhotonNetworkingMessage.OnOwnershipRequest, PhotonNetworkingMessage.OnLobbyStatisticsUpdate,
  PhotonNetworkingMessage.OnPhotonPlayerActivityChanged, PhotonNetworkingMessage.OnOwnershipTransfered
}
 Photon Unity Networking MonoMessage 들의 집합을 정의하며 콜백으로 사용됩니다. PunBehaviour가 구현하고 있습니다. More...
 
enum  PhotonLogLevel { PhotonLogLevel.ErrorsOnly, PhotonLogLevel.Informational, PhotonLogLevel.Full }
 PUN 클래스들에 의한 로그 기록 레벨을 정의 하기 위해서 사용 됩니다. 에러, 정보 또는 모든 것을 기록 합니다. More...
 
enum  PhotonTargets {
  PhotonTargets.All, PhotonTargets.Others, PhotonTargets.MasterClient, PhotonTargets.AllBuffered,
  PhotonTargets.OthersBuffered, PhotonTargets.AllViaServer, PhotonTargets.AllBufferedViaServer
}
 RPC 의 "target" 옵션들입니다. 어떤 원격 클라이언트들이 RPC 호출을 수신 할지를 정의 합니다. More...
 
enum  ClientState {
  ClientState.Uninitialized, ClientState.PeerCreated, ClientState.Queued, ClientState.Authenticated,
  ClientState.JoinedLobby, ClientState.DisconnectingFromMasterserver, ClientState.ConnectingToGameserver, ClientState.ConnectedToGameserver,
  ClientState.Joining, ClientState.Joined, ClientState.Leaving, ClientState.DisconnectingFromGameserver,
  ClientState.ConnectingToMasterserver, ClientState.QueuedComingFromGameserver, ClientState.Disconnecting, ClientState.Disconnected,
  ClientState.ConnectedToMaster, ClientState.ConnectingToNameServer, ClientState.ConnectedToNameServer, ClientState.DisconnectingFromNameServer,
  ClientState.Authenticating
}
 연결/네트워킹 피어 상태 상세. PUN 은 로드밸런싱과 인증 흐름을 "내부적으로" 구현하기 때문에 일부 상태는 자동적으로 다음 상태로 변경됩니다. 이러한 상태는 "(변경예정)" 표기하였습니다. More...
 
enum  DisconnectCause {
  DisconnectCause.DisconnectByServerUserLimit = StatusCode.DisconnectByServerUserLimit, DisconnectCause.ExceptionOnConnect = StatusCode.ExceptionOnConnect, DisconnectCause.DisconnectByServerTimeout = StatusCode.DisconnectByServer, DisconnectCause.DisconnectByServerLogic = StatusCode.DisconnectByServerLogic,
  DisconnectCause.Exception = StatusCode.Exception, DisconnectCause.InvalidAuthentication = ErrorCode.InvalidAuthentication, DisconnectCause.MaxCcuReached = ErrorCode.MaxCcuReached, DisconnectCause.InvalidRegion = ErrorCode.InvalidRegion,
  DisconnectCause.SecurityExceptionOnConnect = StatusCode.SecurityExceptionOnConnect, DisconnectCause.DisconnectByClientTimeout = StatusCode.TimeoutDisconnect, DisconnectCause.InternalReceiveException = StatusCode.ExceptionOnReceive, DisconnectCause.AuthenticationTicketExpired = 32753
}
 연결해제에 대한 원인을 요약합니다. 사용처: OnConnectionFail 와 OnFailedToConnectToPhoton. More...
 

Functions

void IPunObservable.OnPhotonSerializeView (PhotonStream stream, PhotonMessageInfo info)
 PUN 에 의해서 초당 여러번 호출 됩니다. 따라서 스크립트에서 PhotonView 의 동기화 데이터를 읽고 쓸 수 있습니다. More...
 

Detailed Description

초기에 이해할 필요가 있는 가장 중요한 클래스들의 그룹

Enumeration Type Documentation

연결/네트워킹 피어 상태 상세. PUN 은 로드밸런싱과 인증 흐름을 "내부적으로" 구현하기 때문에 일부 상태는 자동적으로 다음 상태로 변경됩니다. 이러한 상태는 "(변경예정)" 표기하였습니다.

Enumerator
Uninitialized 

미수행. 초기화와 첫 번째 사용전에만 설정됩니다.

PeerCreated 

생성되었고 연결할 수 있습니다.

Queued 

현재 사용되고 있지 않음.

Authenticated 

어플리케이션이 인증되었습니다. PUN 은 일반적으로 로비에 참여합니다.

(변경예정) AutoJoinLobby 이 false 가 아니면.

JoinedLobby 

마스터 서버의 로비내에 있고 룸 목록을 받는 클라이언트.

룸에 들어가 플레이 하기위해서는 Join , Create 또는 JoinRandom을 사용합니다.

DisconnectingFromMasterserver 

연결해제중.

(변경예정)

ConnectingToGameserver 

게임 서버에 접속중 (룸에 참여/생성하고 플레이 하기 위해).

(변경예정)

ConnectedToGameserver 

연결된 상태와 유사하지만 게임 서버에 연결된 것 입니다. 룸에 참여/생성하기 위하여 여전히 진행중입니다.

(변경예정)

Joining 

룸에 참여/생성이 진행 중 (게임 서버에서).

(변경예정)

Joined 

룸 참여/생성의 순서에서 마지막 상태. 이 클라이언트는 이제 이벤트의 교환/다른 클라이언트와 RPC를 호출 할 수 있습니다.

Leaving 

룸을 떠나는 중.

(변경예정)

DisconnectingFromGameserver 

게임서버를 떠나는 작업흐름이고 마스터 서버에 다시 연결될 것 입니다.

(변경예정)

ConnectingToMasterserver 

마스터 서버에 연결되어 있는 작업흐름이고 앱의 암호화와 인증을 진행할 것 입니다.

(변경예정)

QueuedComingFromGameserver 

동일하게 큐 되지만 게임서버로 부터 오는 것 입니다.

(변경예정)

Disconnecting 

PUN 이 연결해제 중입니다. 연결해제로 이어집니다.

(변경예정)

Disconnected 

연결이 설정되지 않았고 연결할 준비가 되었습니다. PeerCreated와 유사합니다.

ConnectedToMaster 

로비 참여없이 마스터 서버에 연결중인 마지막 상태입니다. (AutoJoinLobby 은 false 입니다).

ConnectingToNameServer 

클라이언트가 네임서버로 접속합니다. 이 프로세스에는 저 수준 연결과 암호화 설정이 포함됩니다. 잘 되었으면, 상태는 ConnectedToNameServer 이 됩니다.

ConnectedToNameServer 

클라이언트가 네임서버에 연결되었고 이미 암호화를 수행했습니다. OpGetRegions 또는 ConnectToRegionMaster 을 호출 해야 합니다.

DisconnectingFromNameServer 

Photon 네임서버로 부터 연결해제 중 일때입니다.

(변경예정)

Authenticating 

Photon 서버로 연결중 일때로, 상태는 어떤 오퍼레이션을 호출할 수 있기 전의 중간단계입니다.

(변경예정)

연결해제에 대한 원인을 요약합니다. 사용처: OnConnectionFail 와 OnFailedToConnectToPhoton.

ExitGames.Client.Photon.StatusCode 로 부터 상태코드를 추출합니다.

See also
PhotonNetworkingMessage
Enumerator
DisconnectByServerUserLimit 

서버가 이 클라이언트를 능동적으로 연결해제 했습니다. 가능한 원인: 서버의 사용자 제한으로 인해 클라이언트가 강제로 연결해제 되었습니다 (연결시).

ExceptionOnConnect 

연결이 성립될 수 없었습니다. 가능한 원인: 로컬 서버가 수행되지 않고 있습니다.

DisconnectByServerTimeout 

서버에 의한 타임아웃 연결해제 (오랫동안 ACK 가 없어서 결정된 것).

DisconnectByServerLogic 

서버가 이 클라이언트를 능동적으로 연결해제 했습니다. 가능한 원인: 서버의 전송 버퍼가 꽉 찼습니다 (클라이언트의 데이터가 너무 많음).

Exception 

연결이 끊어져야 하는 예외로 인한 원인.

InvalidAuthentication 

(32767) Photon 클라우드가 전송된 AppId 를 거부했습니다. 관리화면을 확인하여 사용하고 있는 AppId 가 올바른지 확인해 주세요.

MaxCcuReached 

(32757) 동시 접속 사용자(CCU)가 앱의 서브스크립션 제한에 도달하여 Photon 클라우드 인증에 실패했습니다.

InvalidRegion 

(32756) 앱의 서브스크립션이 특정 지역 서버를 허용하고 있지 않아서 Photon 클라우드 인증에 실패했습니다.

SecurityExceptionOnConnect 

클라이언트 또는 서버의 보안 설정이 연결을 허용하지 않습니다.(remarks 참조).

브라우저 클라이언트들이 서버로 부터 "crossdomain" 파일을 읽은 것이 일반적인 원인입니다. 이 파일을 사용할 수 없거나 클라이언트가 접속할 수 있도록 환경설정되지 않았다면 이 예외가 던져집니다. Photon 은 일반적으로 이 유니티용 크로스도메인 파일을 제공합니다. 만약 실패하면 아래 문서를 읽어보세요: http://doc.exitgames.com/photon-server/PolicyApp

DisconnectByClientTimeout 

클라이언트에 의한 타임아웃 연결해제 (긴 시간 동안 ACK 가 없어서 결정된 사항).

InternalReceiveException 

수신 루프내의 예외. 가능한 원인: 소켓 오류.

AuthenticationTicketExpired 

(32753) 인증 티켓이 만료되었습니다. 다시 연결을 해서 처리하세요(새로 티켓을 얻기위한 인증도 포함되는 것 입니다).

PUN 클래스들에 의한 로그 기록 레벨을 정의 하기 위해서 사용 됩니다. 에러, 정보 또는 모든 것을 기록 합니다.

Enumerator
ErrorsOnly 

에러만 표시하면 출력이 최소가 됩니다. 주의: 어떤 것은 반드시 예상 해야 하는 "runtime 오류들"이 될 수 있습니다.

Informational 

일부 작업흐름, 호출과 결과에 대한 로그를 기록 합니다.

Full 

사용할 수 있는 모든 로그를 콘솔과/로그파일로 받아 봅니다. 디버깅에만 사용합니다.

Photon Unity Networking MonoMessage 들의 집합을 정의하며 콜백으로 사용됩니다. PunBehaviour가 구현하고 있습니다.

유니티의 "Update()"와 유사하게 PUN은 특수한 상황에서 메소드들을 호출 하게 됩니다. 종종 이러한 메소드들은 네트워크 오퍼레이션이 완료되었을 때 트리거 됩니다(예:룸에 참여 할 때).

이러한 모든 메소드들은 여기 enum 에서 정의되며 설명되어 있으며 PunBehaviour 가 구현하고 있습니다. (오버라이드를 통하여 쉽게 구현 할 수 있습니다).

각 항목은 메소드의 이름과 설명으로 PUN 이 언제 사용하는지 파악 할 수 있습니다.

일부 메소드에는 선택적인 파라미터가 있으니 각각의 항목 설명을 읽어 주시기 바랍니다.

Enumerator
OnConnectedToPhoton 

초기 연결은 성립되었지만 아직 서버를 사용 할 수 있기 전 상태에서 호출됩니다. OnJoinedLobby() 또는 OnConnectedToMaster() 는 PUN이 준비가 되었을 때 호출 됩니다.

이 콜백은 기술적으로 서버로 접속할 수 있는지 감지 할 때 매우 유용하게 사용 됩니다. 대부분의 경우에서 OnFailedToConnectToPhoton()OnDisconnectedFromPhoton() 만 구현해도 충분합니다.

OnJoinedLobby() 또는 OnConnectedToMaster() 는 PUN 이 준비되었을 때 호출 됩니다.

이 메소드가 호출 되었을 때 저수준 연결이 성립되며 PUN 은 백그라운드에서 AppId와 사용자 등을 전송 할 것 입니다. 마스터 서버에서 게임서버로 전환될 때 이 메소드는 호출 되지 않습니다

예: void OnConnectedToPhoton() { ... }

OnLeftRoom 

로컬 사용자/클라이언트가 룸을 나갔을 때 호출 됩니다.

룸을 나갈 때는 PUN이 사용자를 마스터 서버로 이동 시킵니다. 로비를 이용하여 룸에 참여 또는 룸을 생성하기 전에 OnJoinedLobby() 또는 OnConnectedToMaster() 메소드가 다시 호출 됩니다.

예: void OnLeftRoom() { ... }

OnMasterClientSwitched 

현재 마스터 클라이언트가 룸을 나가고 새로운 마스터 클라이언로 교체 된 후 호출 됩니다.

클라이언트가 룸에 입장했을 때는 호출 되지 않습니다. 이 메소드가 호출 되었을 때 이전의 MasterClient 는 아직 플레이어 리스트에 있습니다.

예: void OnMasterClientSwitched(PhotonPlayer newMasterClient) { ... }

OnPhotonCreateRoomFailed 

CreateRoom() 호출이 실패 했을 때 호출 됩니다. 선택적인 파라미터들은 에러코드와 메시지 입니다.

대부분의 경우는 룸 이름이 이미 사용되고 있기 때문입니다 (다른 클라이언트가 더 빨리 룸 이름을 사용한 것 입니다). PhotonNetwork.logLevel 이 >= PhotonLogLevel.Informational 인 경우 PUN은 일부 정보를 로그에 기록 하게 됩니다.

예: void OnPhotonCreateRoomFailed() { ... }

예: void OnPhotonCreateRoomFailed(object[] codeAndMsg) { // codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. }

OnPhotonJoinRoomFailed 

JoinRoom() 호출이 실패했을 때 호출 됩니다. 선택적인 파라미터들은 에러코드와 메시지를 제공 합니다.

대부분의 오류는 룸이 존재하지 않거나 플레이어들이 룸에 꽉 차있을 경우 입니다 (다른 클라이언트가 조금 더 빠른 경우입니다). PhotonNetwork.logLevel 이 >= PhotonLogLevel.Informational 인 경우 PUN은 일부 정보를 로그에 기록 하게 됩니다.

예: void OnPhotonJoinRoomFailed() { ... }

예: void OnPhotonJoinRoomFailed(object[] codeAndMsg) { // codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. }

OnCreatedRoom 

클라이언트가 룸을 생성하여 입장 했을 때 호출 됩니다. OnJoinedRoom() 도 역시 호출 됩니다.

이 콜백은 룸을 생성한 클라이언트에서만 호출 됩니다(PhotonNetwork.CreateRoom 를 참고하세요).

언제라도 모든 클라이언트가 Close (또는 연결해제)가 될 수 있기 때문에 룸을 생성한 클라이언트가 OnCreatedRoom를 실행 하지 않을 확률이 있습니다.

특별한 룸 프로퍼티가 필요 하거나 "시작 신호"가 필요한 경우에는 OnMasterClientSwitched() 를 구현하고 새로운 MasterClient가 룸 상태를 체크하도록 구현하는 것이 더 안전한 방식입니다.

예: void OnCreatedRoom() { ... }

OnJoinedLobby 

마스터 서버 로비에 입장 할 때 호출 됩니다. 실제 룸 목록 갱신은 OnReceivedRoomListUpdate()를 호출 하게 됩니다.

노트: PhotonNetwork.autoJoinLobby 값이 false 일 때, OnConnectedToMaster() 메소드가 호출 되며 룸 목록은 사용할 수 없게 됩니다.

로비내에 있는 동안 룸 목록은 일정 간격으로 자동적으로 업데이트 됩니다 (이 사항은 변경 할 수 없습니다). OnJoinedLobby() 이후 OnReceivedRoomListUpdate() 메소드가 호출 되면 사용할 수 있는 룸 목록을 받습니다.

예: void OnJoinedLobby() { ... }

OnLeftLobby 

로비를 떠난 후 호출 됩니다.

로비를 떠났을 때, CreateRoomJoinRandomRoom은 자동으로 디폴트 로비를 참조하게 됩니다.

예: void OnLeftLobby() { ... }

OnDisconnectedFromPhoton 

Photon 서버에서 접속 해제 된 후 호출 됩니다.

몇 가지 경우에서는 OnDisconnectedFromPhoton 이 호출 되기 전에 다른 콜백 함수들이 호출 됩니다. 예: OnConnectionFail()OnFailedToConnectToPhoton().

예: void OnDisconnectedFromPhoton() { ... }

OnConnectionFail 

연결에 실패한 원인이 발생했을 때 OnDisconnectedFromPhoton()이 호출된 다음에 호출 됩니다.(연결이 성립된 이후).

우선 서버에 도달하지 못한 경우이면 OnFailedToConnectToPhoton 메소드가 대신 호출 됩니다. 오류 원인은 StatusCode 로 제공 됩니다.

예: void OnConnectionFail(DisconnectCause cause) { ... }

OnFailedToConnectToPhoton 

연결이 성립되기전에 Photon 서버의 연결 호출이 실패한 경우 호출되며, 연달아 OnDisconnectedFromPhoton() 이 호출 됩니다.

OnConnectionFail 은 우선 Photon 서버의 연결이 성립되었을 경우에만 호출 됩니다.

예: void OnFailedToConnectToPhoton(DisconnectCause cause) { ... }

OnReceivedRoomListUpdate 

마스터 서버의 로비에 있는 동안(PhotonNetwork.insideLobby) 룸 리스트의 갱신을 위해 호출 됩니다.

PUN은 PhotonNetwork.GetRoomList() 를 통해 룸의 목록을 제공 하고 있습니다.
각 항목은 RoomInfo 로 커스텀 프로퍼티가 있을 수 있습니다(룸을 생성할 때 정의 하며 로비에서 볼 수 있습니다).

모든 타입의 로비들이 클라이언트에게 룸의 목록을 제공 하지는 않습니다. 어떤 로비는 사용자가 모르게 서버측에서 매치메이킹이 되는 특별한 로비일 수 있습니다.

예: void OnReceivedRoomListUpdate() { ... }

OnJoinedRoom 

룸에 입장 했을 때 호출 됩니다 (룸 생성 또는 룸 참여를 통해). 모든 클라이언트에서 호출 됩니다 (마스터 클라이언트도 포함됩니다).

이 메소드는 일반적으로 플레이어 캐릭터 인스턴스 생성을 하기 위하여 사용 됩니다. 만약 게임이 활발하게 시작되어야 한다면 사용자가 버튼을 대신 누르거나 타이머로 트리거한 PunRPC 을 이용할 수 있습니다.

이 메소드가 호출 되었을 때 PhotonNetwork.playerList를 통해서 룸내의 플레이어들의 정보를 접근할 수 있습니다. 그리고 모든 커스텀 프로퍼티들은 Room.customProperties 로써 사용할 수 있어야 합니다. Room.playerCount 로 룸 안의 플레이어들이 경기를 시작하기에 충분한지 검토 하세요.

예: void OnJoinedRoom() { ... }

OnPhotonPlayerConnected 

원격 플레이어가 룸에 입장했을 때 호출 됩니다. 이 시점에서 이 PhotonPlayer는 이미 플레이어리스트에 추가되어 있는 상태입니다.

특정 수의 플레이어로 게임이 시작되면 이 콜백에서 Room.playerCount 를 체크 하여 시작할 수 있는지 검토 할 때 매우 유용 합니다.

예: void OnPhotonPlayerConnected(PhotonPlayer newPlayer) { ... }

OnPhotonPlayerDisconnected 

원격 플레이어가 룸에서 나갔을 때 호출 됩니다. 이 시점에서는 이 PhotonPlayer는 이미 플레이어 목록에서 제거된 상태입니다.

클라이언트가 PhotonNetwork.leaveRoom을 호출 할 때 PUN 은 남아있는 클라이언트들에게 이 메소드를 호출 할 것 입니다. 원격 클라이언트가 연결이 끊어졌거나 종료되었을 때 타임아웃 수초 이후에 이 콜백이 실행됩니다.

예: void OnPhotonPlayerDisconnected(PhotonPlayer otherPlayer) { ... }

OnPhotonRandomJoinFailed 

JoinRandom() 호출이 실패 한 후 호출 됩니다. 선택적인 파라미터에 ErrorCode와 메시지가 제공 됩니다.

대부분 모든 룸이 가득 차있거나 사용 할 수 있는 룸이 없을 경우 입니다. 여러개의 로비를 사용 할 때 (JoinLobby 또는 TypedLobby 를 통해), 다른 로비에는 더 많은 룸이 있을 수 있습니다. PhotonNetwork.logLevel >= PhotonLogLevel.Informational 인 경우 PUN은 일부 정보를 로그에 기록 하게 됩니다.

예: void OnPhotonRandomJoinFailed() { ... }

예: void OnPhotonRandomJoinFailed(object[] codeAndMsg) { // codeAndMsg[0] is short ErrorCode. codeAndMsg[1] is string debug msg. }

OnConnectedToMaster 

PhotonNetwork.autoJoinLobby 값이 false 로 설정되어있을 때만 마스터 서버로 연결이 되고 인증 되었을 때 호출 됩니다.

PhotonNetwork.autoJoinLobby 값을 true 로 설정 해 놓으면, 이 메소드 대신 OnJoinedLobby() 메소드가 호출 됩니다.

로비에 입장하지 않고 룸에 참가하고 생성할 수 있습니다. 이런 경우에 디폴트 로비가 사용됩니다. PhotonNetwork.joinLobby 메소드를 통하여 로비에 입장하지 않고는 룸 목록을 이용할 수 없습니다.

예: void OnConnectedToMaster() { ... }

OnPhotonSerializeView 

주기적으로 PhotonView의 데이터를 동기화 하기 위하여 구현합니다. PhotonView가 관찰하고 있을때 매'network-update'마다 호출됩니다.

이 메소드는 PhotonView 의 Observed 컴포넌트로 지정된 스크립트 내에서 호출 됩니다. PhotonNetwork.sendRateOnSerialize 는 이 메소드가 얼마나 자주 호출 될 것인지에 영향을 줍니다. PhotonNetwork.sendRate 는 이 클라이언트가 얼마나 자주 패키지를 전송 할지에 대해서 영향을 줍니다.

이 메소드를 구현하여 주기적으로 동기화할 PhotonView 데이터를 커스터마이징 할 수 있습니다. 코드에서는 어떤 것(컨텐츠)이 전송되며 수신 클라이언트에서 데이터를 어떻게 사용 할 지에 대해 정의합니다.

다른 콜백과 달리 OnPhotonSerializeView 은 PhotonView에 PhotonView.observed 스크립트로써 할당되어 있을 때만 호출됩니다.

이 메소드를 사용하려면 PhotonStream 이 필수 요소 입니다. 클라이언트측에서는 PhotonView(PhotonStream.isWriting == true) 를 제어 하는 "writing mode"로 되어 있을 것이고 원격 클라이언트측에서는 "reading mode"로 되어있으며 제어하는 클라이언트 전송 데이터를 수신 합니다.

스트림에 값을 쓰는 것을 건너 띄면 PUN 은 업데이트를 스킵하게 됩니다. 주의해서 사용하세요. 이렇게 하면 대역폭과 메시지를 아낄 수 있습니다(룸/초 당 제한이 있습니다)

OnPhotonSerializeView는 Sender가 업데이트를 전송하지 않을 때 원격 클라이언트에서는 호출 되지 않는 다는 것을 주의 하세요. 이것은 "초당 x-번 Update()" 로 사용 될 수 없습니다.

예: void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) { ... }

OnPhotonInstantiate 

PhotonNetwork.Instantiate 를 사용하여 인스턴스가 생성된 게임오브젝트(자식들도)의 모든 스크립트에서 호출 됩니다.

PhotonMessageInfo 파라미터에는 누가 객체를 언제(PhotonNetworking.time 을 기반하여) 생성했는지에 대한 정보를 제공 합니다.

예: void OnPhotonInstantiate(PhotonMessageInfo info) { ... }

OnPhotonMaxCccuReached 

동시접속자가 (일시적으로) 제한에 도달 했기 때문에 클라이언트가 서버에서 거부되고 연결해제 된 것 입니다.

이 상황이 발생하면 사용자는 나중에 다시 시도할 수 있습니다. OnPhotonMaxCcuReached() 에서는 클라이언트가 접속 해제되고 있기 때문에 룸을 생성하거나 참여 할 수 없습니다. 새로운 라이선스로 CCU 제한 값을 증가(직접 호스트 하고 있을 경우) 시킬 수 있으며 또는 서브스크립션을 확장(Photon 클라우드 이용시)하여 증가 시킬 수 있습니다. CCU 제한값에 도달할 경우 Photon 클라우드에서 메일을 전송할 것입니다. 관리화면(웹페이지)에서도 볼 수 있습니다.

예: void OnPhotonMaxCccuReached() { ... }

OnPhotonCustomRoomPropertiesChanged 

룸의 커스텀 프로퍼티가 변경 되었을 때 호출 됩니다. propertiesThatChanged 에는 Room.SetCustomProperties 를 통하여 설정 한 모든 것이 들어 있습니다.

v1.25의 메소드에서는 하나의 파라미터가 있습니다: Hashtable propertiesThatChanged. 프로퍼티의 변경은 Room.SetCustomProperties 에 의해서 수행 되어야 합니다. 이렇게 해야 로컬에서도 콜백이 발생되게 됩니다.

예: void OnPhotonCustomRoomPropertiesChanged(Hashtable propertiesThatChanged) { ... }

OnPhotonPlayerPropertiesChanged 

플레이어의 커스텀 프로퍼티가 변경되었을 때 호출 됩니다. 플레이어와 변경된 프로퍼티들은 object[] 로 전달 됩니다.

v1.25의 메소드부터 하나의 파라미터가 있습니다: object[] playerAndUpdatedProps 이며 두 항목을 가지고 있습니다.
[0] 은 변경된 PhotonPlayer 입니다.
[1] 은 변경된 프로퍼티들의 Hashtable 입니다.

유니티의 GameObject.SendMessage의 한계(하나의 선택적인 파라미터) 때문에 object[] 를 사용하고 있습니다.

프로퍼티의 변경은 반드시 PhotonPlayer.SetCustomProperties 로 수행되어야 하며 이렇게 해야 로컬에서도 콜백이 발생 됩니다. 예:

    void OnPhotonPlayerPropertiesChanged(object[] playerAndUpdatedProps) {
        PhotonPlayer player = playerAndUpdatedProps[0] as PhotonPlayer;
        Hashtable props = playerAndUpdatedProps[1] as Hashtable;
        //...
    }
OnUpdatedFriendList 

FindFriends요청과 PhotonNetwork.Friends갱신에 대하여 서버가 응답을 보냈을때 호출됩니다.

PhotonNetwork.Friends 에서 친구 목록을 사용할 수 있으며 여기에는 이름과 온라인 상태, 사용자가 참여하고 있는 경우 룸의 정보가 있습니다.

예: void OnUpdatedFriendList() { ... }

OnCustomAuthenticationFailed 

커스텀 인증이 실패 했을 때 호출 됩니다. 그리고 접속해제 됩니다!

사용자 입력 , 잘못된 토큰/암호로 인하여 커스텀 인증이 실패 될 수 있습니다. 만약 인증이 성공 했으면 이 메소드는 호출 되지 않습니다. 평소와 같이 OnJoinedLobby() 또는 OnConnectedToMaster() 를 구현 하면 됩니다.

게임을 개발하는 동안 서버측의 잘못 된 환경설정으로 인하여 실패할 수도 있습니다. 이러한 경우에 있어서 debugMessage 를 기록하는 것이 매우 중요 합니다.

앱 에서 커스텀 인증 서비스를 설정(관리화면)에서 하지 않는 한 이 메소드는 호출 되지 않습니다.

예: void OnCustomAuthenticationFailed(string debugMessage) { ... }

OnCustomAuthenticationResponse 

커스텀 인증 서비스가 추가적인 데이터로 응답 했을 때 호출 됩니다.

커스텀 인증 서비스는 응답할 때 커스텀 데이터를 포함 할 수 있습니다. 데이터를 제공 했을 때 이 데이터는 Dictionary 형태로 콜백 내에서 작성됩니다. 데이터의 키(key)가 문자열인 반면 값(value)은 문자열 또는 숫자가 될 수 있습니다(Json 형태로). 값(value)의 타입은 예측할 수 있어야 하며 숫자는 현재 int64 입니다.

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

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

OnWebRpcResponse 

WebRPC 에 대한 응답을 할 수 있을 때 PUN 에 의해 호출 됩니다. PhotonNetwork.WebRPC 를 참고 하세요.

중요: Photon 이 웹 서비스에 도달 할 수 있을 때 response.ReturnCode 의 값은 0 입니다. 응답의 내용은 웹 서비스가 전송한 것 입니다. 이것으로 부터 WebResponse 인스턴스를 생성 할 수 있습니다. 예: WebRpcResponse webResponse = new WebRpcResponse(operationResponse);

주의 하세요: Class OperationResponse 는 "사용되는" 곳의 namespace 내에 있습니다: using ExitGames.Client.Photon; // includes OperationResponse (and other classes)

Photon 에 의해 리턴되는 OperationResponse.ReturnCode: 0 은 "OK" -3 은 "Web-Service not configured" (Dashboard / WebHooks을 확인해 보세요) -5 은 "Web-Service does now have RPC path/name" (최소한 Azure 의 경우에)

예: void OnWebRpcResponse(OperationResponse response) { ... }

OnOwnershipRequest 

다른 플레이어가 현재 소유자로 부터 PhotonView 의 소유권을 요청 했을 때 호출 됩니다.

파라미터 viewAndPlayer 에는 다음 사항이 포함되어 있습니다:

PhotonView view = viewAndPlayer[0] as PhotonView;

PhotonPlayer requestingPlayer = viewAndPlayer[1] as PhotonPlayer;

void OnOwnershipRequest(object[] viewAndPlayer) {} //

OnLobbyStatisticsUpdate 

PhotonNetwork.LobbyStatistics 을 변경하여 마스터 서버가 로비 통계에 대한 변경사항을 전송 할 때 호출 됩니다.

이 콜백에는 2개의 사전 조건이 있습니다: 클라이언트 접속 전에 EnableLobbyStatistics 는 반드시 true 로 설정되어야 합니다. 그리고 클라이언트는 로비에 대한 정보를 제공해주는 마스터 서버에 접속 해야 합니다.

OnPhotonPlayerActivityChanged 

원격 Photon 플레이어 액티비티가 변경되었을 때 호출됩니다. PlayerTtl 이 0 보다 클 경우에만 호출됩니다.

PhotonPlayer.IsInactive를 사용하여 현재 액티비티 상태를 체크하세요

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

이 콜백은 사전 조건이 있습니다: PlayerTtl 은 반드시 0 보다 커야 합니다

OnOwnershipTransfered 

PhotonView 소유자가 플레이어에게 전송되었을 때 호출 됩니다.

viewAndPlayers 파라미터에 포함된 사항:

PhotonView view = viewAndPlayers[0] 는 PhotonView;

PhotonPlayer newOwner = viewAndPlayers[1] 는 PhotonPlayer;

PhotonPlayer oldOwner = viewAndPlayers[2] 는 PhotonPlayer;

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

RPC 의 "target" 옵션들입니다. 어떤 원격 클라이언트들이 RPC 호출을 수신 할지를 정의 합니다.

Enumerator
All 

RPC를 모두에게 전송하고 클라이언트에서 즉시 수행 합니다. 나중에 참여한 플레이어는 이 RPC를 수행하지는 않습니다.

Others 

RPC를 모두에게 전송합니다. 클라이언트는 RPC를 수행하지 않습니다. 나중에 참여한 플레이어는 이 RPC를 수행하지는 않습니다.

MasterClient 

RPC를 MasterClient에게만 전송 합니다. 주의: MasterClient는 RPC를 수행하기전에 연결해제가 되어 RPC가 없어지는 원인이 될 수 있습니다.

AllBuffered 

RPC를 모두에게 전송하고 클라이언트에서 즉시 수행 합니다. 버퍼로 기록 되기 때문에 새로운 플레이어가 참여할 때 이 RPC를 받게 됩니다(이 클라이언트가 떠나기 전까지).

OthersBuffered 

RPC를 모두에게 전송합니다. 이 클라이언트는 RPC를 수행하지 않습니다.버퍼로 기록 되기 때문에 새로운 플레이어가 참여할 때 이 RPC를 받게 됩니다(이 클라이언트가 떠나기 전까지).

AllViaServer 

서버를 통해 이 클라이언트를 포함한 모두에게 RPC를 전송 합니다.

이 클라이언트는 다른 것과 같이 서버에서 수신 되었을 때 RPC를 실행 합니다. 잇점: 서버의 RPC 전송순서는 모든 클라이언트에 동일 합니다.

AllBufferedViaServer 

이 클라이언트를 포함한 모두에게 RPC 를 서버를 통하여 전송하고 나중에 참여할 플레이어를 위해서 버퍼화 합니다.

이 클라이언트는 다른 것과 같이 서버에서 수신 되었을 때 RPC를 실행 합니다. 잇점: 서버의 RPC 전송순서는 모든 클라이언트에 동일 합니다.

Function Documentation

void IPunObservable.OnPhotonSerializeView ( PhotonStream  stream,
PhotonMessageInfo  info 
)

PUN 에 의해서 초당 여러번 호출 됩니다. 따라서 스크립트에서 PhotonView 의 동기화 데이터를 읽고 쓸 수 있습니다.

이 메소드는 PhotonView의 관찰되는 컴포넌트로 할당된 스크립트에서 호출 될 것 입니다.
PhotonNetwork.sendRateOnSerialize 는 이 메소드가 얼마나 자주 호출 되는지에 영향을 줍니다.
PhotonNetwork.sendRate 는 이 클라이언트가 얼마나 자주 패키지를 전송하는 지에 대해서 영향을 미칩니다.

이 메소드를 구현하는 것은 어떤 데이터가 PhotonView 를 주기적으로 동기화하는지 커스터마이징 할 수 있습니다. 코드에서 어떤 것이 전송(컨텐츠)되고 수신 클라이인트가 어떻게 데이터를 사용할지를 정의 합니다.

다른 콜백과 달리 OnPhotonSerializeView 는 PhotonView.observed 스크립트로 PhotonView 에 지정되어 있을 때만 호출 됩니다.

이 메소드를 활용하려면 PhotonStream 이 필수 입니다. PhotonView 를 제어하는 클라이언트에서 "writing" mode" ((PhotonStream.isWriting == true) 로 있을 것이며 제어하는 클라이언트가 전송한 것을 받기만 하는 원격 클라이언트에서는 "reading mode" 로 있을 것 입니다.

스트림에 값 쓰는 것을 스킵하면 PUN 은 업데이트를 스킵할 것 입니다. 주의 해서 사용 하세요. 대역폭과 메시지를 아낄 수 있습니다( 룸/초 당 제한이 있습니다).

sender 가 업데이트를 전송하지 않으면 OnPhotonSerializeView 는 원격 클라이언트에서 호출되지 않는 다는 것을 주의 하세요. "초당 x-번 Update()" 로 사용 될 수 없습니다.

Implemented in PhotonAnimatorView, PhotonTransformView, PhotonRigidbody2DView, and PhotonRigidbodyView.