PUN Classic (v1), PUN 2 and Bolt are in maintenance mode. We will support Unity 2022 with PUN 2, but no new features will be added. Of course all your PUN & Bolt projects will continue to work and run with the known performance in the future. For any upcoming or new projects: please switch to Photon Fusion or Quantum.

최적화 팁

캐시 콜백 타겟

편의상 PUN 콜백은 등록하지 않고 모든 MonoBehaviour에서 모든 GameObject에 구현할 수 있습니다. 보통 이러한 콜백들은 자주 발생하지 않기 때문에 문제는 없습니다(사용자정의 속성 업데이트 제외).

내부적으로, 유니티의 SendMessage는 콜백을 보내는데 사용되며, 이것은 성능에 영향을 미칠 수 있습니다. 더 나쁜 상황은 콤퍼넌트를 찾기 위해 콜백을 구현 하는(아닐 수도 있음) FindObjectsOfType()가 필요한 경우입니다.

PhotonNetwork.SendMonoMessageTargets를 사용하여, 어떤 GameObject가 호출되는지 정의 할 수 있습니다. PhotonNetwork.CacheSendMonoMessageTargets (Type t)를 사용하면 어떤 컴포넌트 타입이 타겟인지를 정의하여 SendMonoMessageTargets를 설정할 수 있습니다.

필요에 따라 SendMonoMessageTargets를 업데이트할 수 있습니다. 기본 무작위 대입 접근 방식보다 빠를 것입니다.

메인 화면으로

OnPhotonSerializeView 와 IPunObservable

PhotonView가 스크립트를 관찰하고 있을 때, OnPhotonSerializeView는 초당 여러번 호출 됩니다. 기본적으로 PhotonView는 리플렉션과 캐싱을 사용하여 찾고 컴포넌트의 OnPhotonSerializeView 구현을 호출합니다.

MonoBehaviours의 IPunObservable 인터페이스를 구현하여 OnPhotonSerializeView의 호출을 최적화 할 수 있습니다.

메인 화면으로

Cache RPC Targets

메인 화면으로

RPC 타겟 캐시

어떤경우에는, 게임에서 매우 많은 RPC를 사용할 수도 있습니다. 타겟 게임오브젝트상의 모든 컴포넌트가 RPC를 구현할 수도 있으므로, PUN은 올바른 메소드를 찾기 위해 리플렉션을 사용하게 됩니다. 물론, 컴포넌트들이 변하지 않으면 이것은 비용이 많이 들며 낭비도 됩니다.

기본적으로, PUN은 스크립트의 유형별로 MethodInfo 목록을 캐시합니다. GameObject 상의 MonoBehaviours를 잠재적인 대상으로 캐시하지 않습니다.

RPC에 대한 PhotonView 당 MonoBehaviours를 캐시하기 위해서 PhotonNetwork.UseRpcMonoBehaviourCache = true를 설정할 수 있습니다. 이렇게 하면 호출 할 컴포넌트의 검색속도를 빨리 찾을 수 있습니다. GameObject의 스크립트가 변경되어 필요에 따라 업데이트하려면 photonView.RefreshRpcMonoBehaviourCache()를 호출하세요.


기술문서 TOP으로 돌아가기