책 한권만 읽은 사람의 포톤 1일차
책 한 권만 읽은 사람이 가장 무섭다. 이란 말을 아는가?
하지만 더 무서운 사람이 있으니
유튜브 포톤 강의 몇시간만 본 사람의 포톤
그렇다 바로 이 글 이다
기본적으로 포톤은 호스트 쪽에서만 클라이언트가 실행된다
플레이어블캐릭터가 아닌 무언가(예를들어 몬스터)의 함수가 실행될때 모든 컴퓨터에서 실행된다고 생각하지만
사실 호스트 쪽에서만 실행되고 클라이언트 쪽에서는 호스트가 뿌려준 신호를 주는것
기본적인 트랜스폼(이동) 애니메이터, 리지드바디 는 포톤뷰 를 통해 해결하지만
단 애니메이터 같은 경우 애니메이터의 움직임을 동기화 시켜주는것 이지
애니메이터 상태 변화의 불값도 동기화 시켜주진 않기에
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는 함수를 사용할때마다 호출 ,
이건 상시 호출로 변수를 관리할때 사용 - 체력