- Today
- Total
프로그래밍 농장
유니티 프로젝트 정리 / Can not Instantiate before the client joined/created a room. State: PeerCreated [Unity] 본문
유니티 프로젝트 정리 / Can not Instantiate before the client joined/created a room. State: PeerCreated [Unity]
Tennessee201 2022. 11. 10.각 플레이어가 게임서버에 접속시 2가지 문제가 발생하였다.
1. FieldItem이 중복/덮어씌워지는 문제
2. 클라이언트_1 이 아이템을 습득하였는데 클라이언트_2의 인벤토리에 해당 아이템이 들어가는 경우
( 위 경우 Scene상의 Item은 정상적으로 동기화된다. )
최초에는 아래와 같은 포톤Docs 에서 언급하였듯 포톤과 유니티 생명주기상의 문제로 인한 에러로 판단하였는데 비슷했지만 아니었다.
start() / awake()문이 생명주기상에서 문제가있어 정상 동작하지않은부분도 있지만 더 정확히 말하자면 콘솔에러메세지 그대로 마스터클라이언트가 최초 접속하지않은 Status인데 프리팹을 Instantiate하려해서 발생한 문제였다.
이후 아래와 같이 함수화하여 마스터클라이언트 접속 후 동작하도록 구현하니 정상작동하였다.
두번째 문제인 아이템이 중복 / 덮어씌워져 생성되는 문제는 아래와 같이 최초 마스터 클라이언트가 접속시에만 Photonview.Instantiate() 해주면 문제없이 동기화 될것이다.
마지막으로 클라이언트_1이 아이템을 습득시 클라이언트_2의 인벤토리로 아이템이 들어가는 문제는 아래의 코드가 Photon 동기화 없이 로컬함수로 동작하기에 해당 부분을 수정해주면 될것이다.
1. 마스터 제외 클라이언트에서 아이템이 안보이는 문제
-> PhotonView에서 동기화가 제대로 안되는 부분 해결필요
2. 타 클라이언트에서 아이템이 생성된부분에 접촉해서 습득시 마스터클라의 인벤토리로 들어감
-> Inventory.cs/OnTirggerEnter 부분을 Photon 동기화하는 코드로 변경해야함 .
References :
'Unity' 카테고리의 다른 글
Shader 연습 [Unity] (0) | 2022.11.14 |
---|---|
Visual Effects for Games in Unity - Stylized Explosion [Unity] (0) | 2022.11.11 |
GamerHub / Unity (0) | 2022.11.09 |
Lerp를 프로처럼 사용하는 방법 [Unity] (0) | 2022.11.09 |
디자인패턴 - 전략 패턴(Strategy Pattern) [Unity] (0) | 2022.11.09 |