1. Photon View
포톤으로 네트워크 게임을 제작할 경우 사용자 뿐만 아니라 해당 네트워크에 접속해 있는
다른 플레이어들도 존재합니다. 아무런 세팅을 하지 않았을 경우
플레이어 A가 움직여도, 플레이어 B 입장에서는 플레이어가 A가 움직이지 않습니다.
그 이유는 하나의 게임파일을 같이 사용하는 것이 아니라, 플레이어 A와 B는 둘다 별도의 게임 파일을
가지고 있기 때문입니다. 따라서 A에 변화를 감지해서 B에게도 적용해줄 수 있는 장치가 필요합니다.
- 플레이어 움직임 동기화
플레이어의 위치를 동기화 하기 위해서는 반드시 Palyer 오브젝트에 Photon View 컴포넌트가 존재해야합니다.
Photon View는 변화를 감지하여 서버에 존재하는 플레이어들에게도 똑같이 적용하는 역할을 합니다.
위 처럼 Photon Transform View 컴포넌트를 추가한 뒤에, Photon View의 Observed Components에 적용할 경우
플레이어의 Transform 값의 변화를 감지한 후, 다른 플레이어에게도 똑같이 적용할 수 있습니다.
만약 Transform 뿐만 아니라 애니메이션이나, 물리 연산등의 변화를 다른 플레이어들에게도 적용하고 싶으면
Photon Animator View, Photon Rigidbody 2D View 처럼 해당하는 컴포넌트를 추가해야합니다.
2. Photon RPC
RPC는 Remote Procedure Call의 약자로 직역하자면 원격 프러시저 호출입니다.
프로그래밍 로직 상으로 쉽게 풀어서 설명하자면 방에 존재하는 플레이어들에게 해당 함수를 실행해라라는
의미로도 설명할 수 있습니다.
위 처럼 string 입력값을 받아서 UI Text에 적용시켜주는 PlayerChatting() 함수를 플레이어 A가 실행했을 경우,
플레이어 B에게도 해당 함수가 똑같이 실행되야합니다. 그래야지만 똑같이 A가 입력한 "안녕하세요"라는
Text가 플레이어 B에게도 보이게 됩니다.
PlayerChatting() 메서드 위에 [PunRPC]를 입력하여 해당 메서드를 RPC 메서드로 지정해줍니다.
이후 PhotonView.RPC("메서드이름", RPC를 실행할 대상, 메서드 인자값)을 사용하면
플레이어 A와, 플레이어 B 모두 PlayerChatting()메서드가 똑같이 실행되기때문에
위와 같이 Player A와 B 모두에게 해당 텍스트가 보이게 되는 것 입니다.
'Unity' 카테고리의 다른 글
Unity InputSystem (0) | 2024.01.31 |
---|---|
Unity Action (0) | 2024.01.23 |
Unity Animator Controller 변경, RectTransform (0) | 2024.01.19 |
Unity Photon 주요 기능들 (0) | 2024.01.18 |
Unity 애니메이션 역재생, 전처리기 (0) | 2024.01.15 |