센로그
[PUN2] IPunObservable 본문
◆ IPunObservable 이란?
관찰할 데이터들을 주고받으며 동기화 해주도록 구현할 수 있는 인터페이스
이 인터페이스를 상속받은 스크립트는 인터페이스 메서드인 OnSerializeView()를 꼭 구현해줘야 하며,
PhotonView의 Observed Components란에 추가하여 관찰할 수 있다.
위 그림에서 PhotonView는 IPunObservable을 상속한 PlayerMove클래스의 OnSerializeView()를 호출하여 동기화한다.
이때, 초당 PhotonNetwork.SerializationRate로 설정된 만큼의 비율로 호출한다. (get 및 set 가능)
stream을 주고 받는 만큼, 안에 int, string 등을 포함하여 전달할 수 있다.
따라서 간단한 변수 동기화에 많이 쓴다.
◆ IPunObservable 사용법
1) IPunObservable 인터페이스를 상속받고,
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)를 구현해 줌.
2) 해당 스크립트를 PhotonView의 Observed Components에 추가.
※ 인터페이스인 만큼, 무조건 인터페이스 메서드를 구현해줘야 함
[예시]
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.IsWriting) //보내는 데이터 (브로드캐스트)
stream.SendNext(txt.text);
else //받는 데이터
txt.text = (string)stream.ReceiveNext(); //받고 타입캐스팅 해주기
}
여러 데이터를 주고받는 경우, 데이터를 보낸 순서와 받는 순서가 동일함. (받을 때는 타입 캐스팅 해줘야 함)
'게임 > PUN2(Unity)' 카테고리의 다른 글
[PUN2] Room 생성 및 참가 / RoomOptions / Room 관련 정보 확인 (0) | 2023.07.24 |
---|---|
[PUN2] Player 클래스 (0) | 2023.02.15 |
[PUN2] PunRPC / PV.RPC (0) | 2023.01.20 |
[PUN2] Custom Property (커스텀 프로퍼티) (0) | 2023.01.20 |
[PUN2] PhotonView - Transform, Animator, Rigidbody (0) | 2023.01.20 |
Comments