배운 것들

먼저 어몽어스를 포톤에 연결했다.

이번엔 새로운 것을 배웠는데 OnPhotonSerializeView라는 것이었다. 로컬 변수를 포톤으로 보내 포톤이 다른 유저들에게 전파하여 동기화하는 방식이다.

PhotonNetwork.Instantiate는 네트워크 객체를 생성하는 함수인데 첫 번째 인자로 String이 들어가서 System.IO의 Path.Combine을 이용하여 폴더를 지정할 수 있게끔 했다.

gameObject.SetActive(bool value)는 bool값에 따라 게임 오브젝트를 킬지 끌지를 정하는 함수이다.

어몽어스 캐릭터 동기화 중에 Null오류가 떴었다. PhotonNetwork.Instantiate의 순서상의 문제였다.

이는 myAvatarSprite가 Start에서 불리는데 OnPhotonSerializeView와 Start의 순서가 어느 것이 먼저 실행될 지 모르기 때문에 Awake에서 avatar와 myAvatarSprite를 가져오는 것으로 해결했다.

카메라의 CullingMask는 카메라가 특정 레이어만 보이게 할 수 있는 기능이다.

코드에서 비트 연산을 이용하여 여러개 마스크를 설정해보았다.

nickText.text = _pv.Owner.NickName에서 텍스트에 초반에 설정한 포톤뷰 주인의 닉네임을 넣어주었다.

포톤 챗도 사용하였다.

IChatClientListener라는 인터페이스를 통해 채팅 기능을 구현할 수 있다.

 

한 주 후기

 이번 주는 포톤 펀의 동기화와 포톤 챗을 배워보는 시간을 가졌다.

 포톤 펀의 동기화는 RPC함수를 통해서도 가능하지만 실시간으로 변화하는 것을 추적해야하는 상황이면 OnPhotonSerializeView를 사용해야한다는 것을 알게 되었다. 포톤 펀을 배우면서 가장 어려웠던 점은 포톤의 동기화 시점과 유니티의 생명주기를 잘 고려해서 코드를 짜야된다는 것이다. 위에서 언급했듯 아바타 스프라이트를 찾는 시점이 포톤 객체가 생성되기 전이어서 계속 null이 뜨는 것을 몰라서 시간을 많이 소비했던 것 같다. 포톤 펀에 익숙해지기 위해서 지금 하고있는 다른 프로젝트에도 멀티로 바꿔보는 연습을 해야겠다는 생각이 들었다.

 다음 주에는 어떤 것을 배울 지 궁금하다. 적으면서 배우고 필요할 때 다시 꺼내서 써보는 시간을 자주 가져야겠다는 생각이 들었다. 다음 주도 파이팅!

 

 

유데미코리아 바로가기

본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.

+ Recent posts