초기에 이해할 필요가 있는 가장 중요한 클래스들의 그룹 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... | |
Functions | |
void | IPunObservable.OnPhotonSerializeView (PhotonStream stream, PhotonMessageInfo info) |
PUN 에 의해서 초당 여러번 호출 됩니다. 따라서 스크립트에서 PhotonView 의 동기화 데이터를 읽고 쓸 수 있습니다. More... | |
초기에 이해할 필요가 있는 가장 중요한 클래스들의 그룹
enum ClientState |
연결/네트워킹 피어 상태 상세. 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 서버로 연결중 일때로, 상태는 어떤 오퍼레이션을 호출할 수 있기 전의 중간단계입니다. (변경예정) |
enum DisconnectCause |
연결해제에 대한 원인을 요약합니다. 사용처: OnConnectionFail 와 OnFailedToConnectToPhoton.
ExitGames.Client.Photon.StatusCode 로 부터 상태코드를 추출합니다.
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) 인증 티켓이 만료되었습니다. 다시 연결을 해서 처리하세요(새로 티켓을 얻기위한 인증도 포함되는 것 입니다). |
enum PhotonLogLevel |
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 |
로비를 떠난 후 호출 됩니다. 로비를 떠났을 때, CreateRoom 과 JoinRandomRoom은 자동으로 디폴트 로비를 참조하게 됩니다. 예: 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() 를 통해 룸의 목록을 제공 하고 있습니다. 모든 타입의 로비들이 클라이언트에게 룸의 목록을 제공 하지는 않습니다. 어떤 로비는 사용자가 모르게 서버측에서 매치메이킹이 되는 특별한 로비일 수 있습니다. 예: 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 이며 두 항목을 가지고 있습니다. 유니티의 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) {} // |
enum PhotonTargets |
RPC 의 "target" 옵션들입니다. 어떤 원격 클라이언트들이 RPC 호출을 수신 할지를 정의 합니다.
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.