PUN Classic (also called PUN1) is the original and first major version of PUN. It is now replaced by PUN2 which is refactored and enhanced. We highly recommend starting new projects with PUN2 and if possible migrating existing ones from PUN1 to PUN2 by following our "Migration Notes". PUN Classic will be maintained for the coming months. We will fix important bugs and support new Unity versions but new features will be added only to PUN2.

오프라인 모드

오프라인 모드는 멀티 플레이어 코드를 싱글 플레이어 게임 모드에서도 재사용할 수 있는 기능입니다.

싱글 플레이어에서 사용하고 싶은 가장 일반적인 기능은 RPC전송과 PhotonNetwork.Instantiate 입니다. 오프라인 모드의 주요 목적은 연결이 되지 않았을 때 null 참조가 되지 않도록 하고 PhotonNetwork 기능을 사용할 때 오류가 발생하지 않도록 하는 것 입니다. 게임등의 설정을 위해 싱글 플레이어 게임을 실행하고 있다는 사실을 계속 추적해야할 필요가 있습니다. 하지만 게임을 실행하는 동안에, 모든 코드는 재사용이 가능해야 합니다.

PhotonNetwork가 의도에 의한 에러임을 판단하기 위해 수동으로 오프라인을 켜야 합니다. 이 기능을 사용하는 것은 쉽습니다:

PhotonNetwork.offlineMode = true;

true로 설정하면, Photon은 OnConnectedToMaster() 콜로 콜백한다음 룸을 생성할 수 있으며, 이 룸은 오프라인이 될 것입니다.

이제 연결 및 오류 없이 특정 멀티 플레이어 방법을 재사용할 수 있습니다. 게다가 눈에 띄는 오버 헤드도 없습니다. 다음은 PhotonNetwork기능 및 변수들과 오프라인 모드에서 수행되는 결과입니다:

  • PhotonNetwork.player: 플레이어 ID는 항상 -1 입니다.
  • PhotonNetwork.playerName: 예상했던대로 동작합니다.
  • PhotonNetwork.playerList: 로컬 플레이어만 들어있습니다.
  • PhotonNetwork.otherPlayers 항상 비어있습니다.
  • PhotonNetwork.time: returns Time.time.
  • PhotonNetwork.isMasterClient: 항상 true 입니다.
  • PhotonNetwork.AllocateViewID(): 예상했던대로 동작합니다.
  • PhotonNetwork.Instantiate: 예상했던대로 동작합니다.
  • PhotonNetwork.Destroy: 예상했던대로 동작합니다.
  • PhotonNetwork.RemoveRPCs/RemoveRPCsInGroup/SetReceivingEnabled/SetSendingEnabled/SetLevelPrefix: 싱글 플레이어에서는 의미는 없으며 아무런 영향이 없습니다.
  • PhotonView.RPC: 예상했던대로 동작합니다.

위에 있는 이외의 속성 또는 메소드를 사용하는 것은 예상치 못한 결과가 나올 수 있거나 아무런 동작을 하지 않을 수도 있습니다. 예, PhotonNetwork.room은 명백히 null을 리턴합니다. 싱글 플레이어에서 게임을 시작하고 나중에 멀티 플레이어로 이동하려면 1 플레이어 게임을 호스팅 하는 것이 좋습니다. 이렇게 하면 버퍼링된 RPC및 인스턴스화 호출이 보존되는 반면, 오프라인 모드 인스턴스는 연결 후 자동으로 수행되지 않습니다.

오프라인 모드를 중지하려면 PhotonNetwork.offlineMode = false; 로 설정하거나 Connect() 를 호출하면 됩니다.

To Document Top