RPC 함수는 멀티에서 정말 중요한 개념이고 멀티의 기초이다.
Photon을 사용하여 코드를 구현했지만 Photon을 사용하지 않고 Multi 구현한다 해도
개념은 비슷하니 RPC 함수의 개념에 대해 알아보자.
Photon에서 RPC 함수의 선언은 [PunRPC]를 함수 위에 붙여주면 RPC 함수로 사용할 수 있게 된다.
멀티 게임 상에 플레이어A와 플레이어B 총 2명의 플레이어가 있을 때 게임 세상(?)은 2개가 생기게 된다.
각각의 플레이어의 PC에 게임이 띄워져 있으니 게임 세상은 2개다.
게임 세상 안에는 나와 상대방 총 2명씩 있게 되니 플레이어는 총 2 x 2 = 4명이 되게 된다.
플레이어 A의 PC에서 플레이 중인 게임은 플레이어 A의 게임 세상이므로 플레이어 A가 Mine이 된다.
플레이어 B의 PC에서는 반대가 되겠다.
그래서 PV.IsMine을 조건문 안에 넣으면 자신이 Mine일 때 즉 자신이 플레이 중인 게임 세상일 때만 작동하게 된다.
(PV는 Photon 컴포넌트를 받아온 변수)
RPC 함수를 실행하면 모든 플레이어에게 정해진 함수를 실행하도록 한다.
(FlipXRPC는 플레이어가 반대쪽을 바라보게 하는 함수이다.)
그렇다면 원래는 4명의 플레이어(게임 세상이 2개)가 모두 FlipXRPC를 실행해서 모두 반대로 돌아야 하지만
isMine이 걸려 있으니 자신의 플레이어 즉 자기가 컨트롤하는 플레이어만 FlipXRPC를 실행하게 된다.
그래서 결국 RPC 함수와 IsMine을 합쳐서 다른 게임 세상의 내 캐릭터에게 함수를 실행시킬 수 있는 것이다.
반대도 마찬가지겠죠? 이해에 도움이 되셨길..
'Unity > Photon' 카테고리의 다른 글
[2D FPS (5)] 결과 (0) | 2023.06.07 |
---|---|
[2D FPS (4)] Player&Bullet (0) | 2023.06.07 |
[2D FPS (3)] UI 구현 (0) | 2023.06.07 |
[2D FPS(1)] Photon을 사용한 게임 동기화 (0) | 2023.06.07 |
Photon (Network Game Engine)란? (0) | 2023.06.07 |