최적화 팁
인스턴스 생성을 위한 Pool 객체
PUN에는 로드된 리소스가 아닌 풀에서 개체를 인스턴스화하는 기본 제공 옵션이 있습니다 (이 옵션은 작업 속도를 높이기 위해 메모리에 보관됩니다).
인스턴스 생성 문서 페이지에서 PrefabPool 사용하기를 읽어 주십시오.
RPC 타겟 캐시
어떤 경우에는, 게임에서 매우 많은 RPC를 사용할 수도 있습니다.
타겟 게임 오브젝트상의 모든 컴포넌트가 RPC를 구현할 수도 있으므로, PUN은 올바른 메소드를 찾기 위해 리플렉션을 사용하게 됩니다.
물론, 컴포넌트들이 변하지 않으면 이것은 비용이 많이 들며 낭비도 됩니다.
기본적으로, PUN은 스크립트의 유형별로 MethodInfo 목록을 캐시합니다.
GameObject 상의 MonoBehaviours를 잠재적인 대상으로 캐시하지 않습니다.
RPC에 대한 PhotonView 당 MonoBehaviours를 캐시하기 위해서 PhotonNetwork.UseRpcMonoBehaviourCache = true
를 설정할 수 있습니다.
이렇게 하면 호출 할 컴포넌트의 검색속도를 빨리 찾을 수 있습니다.
GameObject의 스크립트가 변경되어 필요에 따라 업데이트하려면 photonView.RefreshRpcMonoBehaviourCache()
를 호출하세요.
RaiseEvent에 대한 로컬 지연 없애기
RaiseEvent를 호출하면 데이터가 즉시 직렬화되지만 소켓으로 바로 전송되지는 않습니다. 대신 SendOutgoingCommands()
가 호출될 때까지 대기합니다.
이러한 방식으로 Photon은 트래픽을 최적화하기 위해 메시지를 더 작은 데이터그램으로 집계합니다.
온디맨드에서의 로컬 지연을 방지하려면 필요 시 로직에 LateUpdate()
에서 SendOutgoingCommands()
로 호출하기 위한 트리거가 있어야 합니다.
온디맨드 방식으로 하면 됩니다.