[ Unity ]
Unity에서 멀티플레이어 게임을 만들 때 PUN2 패키지는 Photon 서버와의 연결을 통해 네트워크 기능을 쉽게 구현할 수 있도록 도와준다. PUN2는 게임 오브젝트의 네트워크 동기화와 원격 함수 호출을 가능하게 하는 다양한 컴포넌트와 클래스를 제공한다.
일반 GameObject는 PhotonView 컴포넌트를 추가하면 네트워크 객체로 전환된다. PhotonView는 네트워크를 통해 해당 객체를 식별하고, 실시간으로 상태를 동기화하는 데 사용된다. 이 컴포넌트 없이는 오브젝트의 상태를 네트워크로 동기화하거나 원격 함수를 호출하는 것이 불가능하다.
PhotonView는 다음과 같은 핵심 기능을 제공한다.
1. IsMine을 통해 현재 클라이언트가 해당 PhtonView가 부착된 오브젝트의 소유자인지 여부를 확인할 수 있다.
2. RPC를 통해 네트워크 상의 다른 클라이언트에서 특정 함수를 호출할 수 있게 한다.
RPC는 특정 플레이어의 액션이나 이벤트가 다른 모든 클라이언트 또는 특정 클라이언트에 즉시 전파되어 실행되어야 할 때 사용된다. RPC를 사용하려면 원격으로 호출될 함수 앞에 [PunRPC] 속성을 붙여야 하며, PhotonView.RPC() 메서드를 통해 호출한다. RpcTarget 옵션을 통해 RPC를 실행할 대상을 All, Others, MaterClient 등으로 정밀하게 지정할 수 있다.
MonoBehaviourPun과 MonoBehaviourPunCallbacks은 모두 MonoBehaviour를 상속받아,
Photon 네트워크 환경에서 스크립트가 원활하게 동작하도록 돕는 기본 클래스다.
MonoBehaviourPun은 GetComponent<PhotonView>()를 별도로 호출할 필요 없이 photonView 속성을 통해 해당 게임 오브젝트의 PhotonView 컴포넌트에 간편하게 접근할 수 있다. 주로 PhotonView를 통해 RPC를 호출하거나, IsMine을 사용하여 자신의 오브젝트를 제어하는 등 단순하게 PhotonView의 기능만 필요할 때 사용된다.
MonoBehaviourPunCallbacks은 MonoBehaviourPun의 모든 기능을 포함하며, 추가적으로 다양한 Photon 네크워크 이벤트에 대한 콜백 메서드를 제공한다. 이 콜백 메서드를 override하여 특정 네트워크 이벤트(예: 서버 연결, 방 생성/입장, 플레이어 입장/퇴장)가 발생했을 때 원하는 동작을 구현할 수 있다.
결론적으로, 스크립트에서 PhtonView의 IsMine을 확인하여 자신의 캐릭터만 조작하거나 RPC를 통해 함수를 호출하는 등 단순히 PhotonView의 기능만 활용하고 싶다면 MonoBehaviourPun을 상속받는 것으로 충분하다.
하지만 게임의 네트워크 이벤트(예: 서버 연결, 방 생성/입장, 플레이어 입장/퇴장)에 따라 특정 동작을 수행해야 한다면, MonoBehaviourPunCallbacks을 상속받아 필요한 콜백 메서드를 override하여 사용하는 것이 효율적이다.
[ 출처 ]
유니티 멀티플레이어 네트워크 게임 한방에 만들기 (포톤 + 파이어베이스) by 레트로 retr0
https://www.youtube.com/watch?v=-QsfDgvcheQ&list=PLctzObGsrjfwF7kkoraWb235U8Z602gx1
pun2 공식 문서
'TIL' 카테고리의 다른 글
[ 25.07.02 ] TIL - Firebase 로그아웃 (0) | 2025.07.02 |
---|---|
[ 25.06.27 ] TIL - Firebase Google 로그인 (0) | 2025.06.27 |
[ 25.06.17 ] TIL - Photon 서버 연결 및 매치메이킹 (0) | 2025.06.17 |
[ 25.06.16 ] TIL - FirebaseAuth 활용하여 이메일 로그인 (0) | 2025.06.16 |
[ 25.01.20 ] TIL - CSV 파싱 (0) | 2025.01.20 |