[Photon] PUN 콜백

Flaming Bun·2025년 6월 13일

포톤

목록 보기
3/4

참고 사이트 : https://doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/intro

🔥 PUN 콜백

PUN의 콜백은 2가지 구현 방식을 제공한다.


콜백 인터페이스

PUN은 다음과 같은 C# 인터페이스를 제공한다.

  • IConnectionCallbacks: 연결 관련 콜백.
  • IInRoomCallbacks: 룸 내부 관련 콜백
  • ILobbyCallbacks: 로비 관련 콜백
  • IMatchmakingCallback: 매치메이킹 관련 콜백
  • IOnEventCallback: 수신된 이벤트 단일 콜백
    C# 이벤트 LoadBalancingClient.OnEventReceived와 동등하다
  • IWebRpcCallback: WebRPC 오퍼레이션 응답 수신에 대한 단일 콜백
  • IPunInstantiateMagicCallback: PUN 프리팹의 인스턴스화에 대한 단일 콜백
  • IPunObservable: PhotonView 직렬화 콜백 (변수 동기화 때 사용한다.)
  • IPunOwnershipCallbacks: PUN 소유권 이전 콜백.

콜백 인스턴스는 등록 후에 등록을 해제해야 한다. (OnEnable(), OnDisable() 같은 곳에서)


MonoBehaviourPunCallbacks

MonoBehaviour와 콜백 인터페이스를 상속받은 클래스를 생성하는 대신,
프로퍼티와 가상 메서드를 사용할 수 있는 MonoBehaviourPunCallbacks를 상속 받으면 오타에 대해 걱정할 필요 없고, 모든 메서드를 구현할 필요 없기 때문에 상대적으로 쉬운 구현 방식이다.

콜백 인스턴스 기본 규칙인 OnEnable() 또는 OnDisable() 호출할 필요가 없다.

혹시나 OnEnable()OnDisable()을 오버라이드 했다면 부모 클래스의 메서드를 호출해야 한다.


⚔ 예시

OnConnectedToMaster()OnDisconnected()로 연습하겠다.

Launcher 클래스의 상속을 MonoBehaviour에서 MonoBehaviourPunCallbacks로 변경한다.

using Photon.Realtime;
public override void OnConnectedTOMaster()
{
	Debug.Log("OnConnectedToMaster()");
    PhotonNetwork.JoinRandomRoom(); // 랜덤 Room 입장 시도
}

// PhotonNetwork.JoinRandomRoom(); 실패 시 아래 콜백을 받는다
public override void OnJoinRandomFailed(short returnCode, string message)
{
	Debug.Log("OnJoinRandomFailed()"); // 랜덤 Room 입장 실패
    PhotonNetwork.CreateRoom(null, new RoomOptions());
}

// PhotonNetwork.JoinRandomRoom(), PhotonNetwork.CreateRoom()의 입장 성공 시 아래 콜백을 받는다.
public override void OnJoinedRoom()
{
	Debug.Log("OnJoinedRoom()");// Room 입장 성공 시
}

public override void OnDisConnected(DisconnectCause cause)
{
	Debug.Log("OnDisConnected()");
}

0개의 댓글