Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

행복한 개구리

PUN2 LoadScene 후 Client가 Master Client의 객체를 Load하지 못하는 이슈 본문

Unity/Unity - Solutions

PUN2 LoadScene 후 Client가 Master Client의 객체를 Load하지 못하는 이슈

HappyFrog 2021. 7. 16. 14:46

강사님과 함께 테스트하며 도출해낸 추측되는 원인들에 대해서 서술한다.

정확한 원인이 아닐 수 있음을 주의

 

  • 이상하게도 확률적으로 Nox화면과 Unity Editor를 서로 같은방에서 실행시켜 인게임에 진입을 하면 Client쪽이 MasterClient의 객체들(PhotonNetwork.Instantitate를 시키더라도)을 볼 수 없는 경우가 있었다. 
    • => 여러번 실행시켜보면 Client에서 Client와 Master의 객체동기화가 이루어질 때도 있고 그러지 않는 경우도 있다.

 

  • 이는 MonoBehaviourPunCallbacks가 Start에 의존되어 있어 발생하는 현상으로 보인다.
    • => MonoBehaviourPunCallbacks의 기능들은 Start이후에 실행된다.
  • 따라서 PhotonNetwork.Instantiate를 Start보다 먼저(Awake메서드에서 )실행시킨다면 Instantiate되는 것이 동기화가 되지 않는다. 

 

  • 결론) Photon에서 객체동기화를 시킬 객체들은 Start이후에 선언해주자
    • => 그래도 안 될수도 있다. 이 때는 각 기기의 프레임에 달려있는데, 이유는 각 기기가 새로운 씬을 Load하는 프레임이 다르기 때문이다.
    • 그 과정에서 프레임이 높게 찍히는 기기는 씬 전환이 조금 더 빠를 것이고 그에 따라 해당 씬의 Awake, Start메서드가 조금 더 빨리 실행될 것이다.
    • 이 때 생성한 객체들은 프레임이 늦는 기기에서는 씬 전환전에 생성된 데이터를 볼 수 없게되어 일어나는 현상으로 보인다.

하지만 Nox측에서 여전히 동기화를 시키지 못했다.

 

  • 의심이 가는 부분은 IPunObservable이 Receivedata를 제대로 하지 못한다 하더라도 senddata를 해야하는건지 의심중이며
  • 그와 동시에 가장 크게 의심되는 부분은 Nox의 기능적인 부분이다.
  • 이 전에도 게임을 즐길 때 Nox의 환경은 핸드폰만 못한 경우가 있었으며 이에 따른 결과임이 의심되는 상황이다
    • => Unity Editor가 일반클라일 때는 해당 에러가 발생하지 않기 때문에.