PUN Classic(PUN1이라고도 불립니다)은 PUN의 첫 버전입니다.         현재는 리팩토링 및 기능 확장에 의해 PUN2로 새롭게 바뀌었습니다.          새 프로젝트에는 PUN2를 이용해 주시고, 기존의 프로젝트도 가능하면 PUN1에서 PUN2로 옮기는 것을 권장합니다.  자세한 내용은: "마이그레이션 노트". PUN Classic은 곧 점검이 시작됩니다.        중요한 버그의 수정과 Unity의 신버전의 지원 등을 예정하고 있습니다. 신기능의 추가는 PUN2에서만 이루어지므로 주의해 주십시오.

최적화 팁

캐시 콜백 타겟

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

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

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

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

Back To Top

OnPhotonSerializeView 와 IPunObservable

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

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

Back To Top

Cache RPC Targets

Back To Top

RPC 타겟 캐시

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

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

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

기술문서 TOP으로 돌아가기