박민혁의 개발

책 한권만 읽은 사람의 포톤 1일차 본문

TIL

책 한권만 읽은 사람의 포톤 1일차

박민혁_kog 2023. 10. 24. 20:07

책 한 권만 읽은 사람이 가장 무섭다. 이란 말을 아는가? 

하지만 더 무서운 사람이 있으니



유튜브 포톤 강의 몇시간만 본 사람의 포톤 



그렇다 바로 이 글 이다 




기본적으로 포톤은 호스트 쪽에서만 클라이언트가 실행된다

플레이어블캐릭터가 아닌 무언가(예를들어 몬스터)의 함수가 실행될때 모든 컴퓨터에서 실행된다고 생각하지만
사실 호스트 쪽에서만 실행되고 클라이언트 쪽에서는 호스트가 뿌려준 신호를 주는것

기본적인 트랜스폼(이동) 애니메이터, 리지드바디 는 포톤뷰 를 통해 해결하지만
단 애니메이터 같은 경우 애니메이터의 움직임을 동기화 시켜주는것 이지 
애니메이터 상태 변화의 불값도 동기화 시켜주진 않기에 
bool값을 바꿔주는 메서드는 따로 신경 써야한다




일반 함수는 통신이 안되기 때문에 함수에 [PunRPC]를 붙여주면 된다

이경우 MonoBehaviourePun을 상속받은 클래스로 사용한다
ex
class a : MonoBehaviourPun

if(포톤뷰.Ismine) 포톤뷰.RPC("이름", RpcTarget.ALL, 변수 1 , 변수2)

   [PunRPC]
void test(int 변수1 , int 변수2)
{

}
if(포톤뷰.Ismine)  는 사실 사용하지 않아도 되는경우가 있지만 
호스트나 클라이언트 의 구분없이 모두 사용시 1번만 호출하는것을 2번 호출하기에 
그러니 RPC로 보내주는건 호스트만 하도록 만들어준다


[OnPhotonSerializeView] - 변수 동기화
 IPunObservable 인터페이스 구현 후 사용
punrpc는 함수를 사용할때마다 호출 ,
이건 상시 호출로 변수를 관리할때 사용 - 체력


'TIL' 카테고리의 다른 글

Json 파일 vs CSV 파일  (0) 2023.10.25
책 한권만 읽은 사람의 포톤 2일차  (0) 2023.10.25
플레이어 상태 머신  (1) 2023.10.23
애니메이션 점프 중 상승 상태 하강 상태  (0) 2023.10.20
유니티 사운드 매니저  (0) 2023.10.19