Version: 2019.2
오디오 프로파일러
GPU 프로파일러

물리 프로파일러

물리 프로파일러는 씬에서 물리 엔진으로 처리된 물리에 대한 통계를 표시합니다. 이 정보는 성능 문제나 씬의 물리와 관련된 예기치 못한 불일치를 진단 및 해결하는 데 유용할 수 있습니다.

물리 디버그 시각화도 참조하십시오.

물리 프로파일러
물리 프로파일러

프로퍼티

프로퍼티 기능
Active Dynamic 휴면 상태가 아닌 non-Kinematic Rigidbody 컴포넌트의 수입니다.
Active Kinematic 휴면 상태가 아닌 Kinematic Rigidbody 컴포넌트의 수입니다. 조인트가 연결된 Kinematic Rigidbody 컴포넌트는 프레임마다 여러 번 처리될 수 있고, 표시되는 숫자에 이 처리 횟수가 반영됩니다. 키네마틱 리지드바디는 프레임에서 MovePosition 또는 MoveRotation이 호출될 때 활성화되고 다음 프레임에서 활성 상태로 유지됩니다.
Static Colliders 게임 오브젝트 또는 부모 게임 오브젝트에 Rigidbody 컴포넌트가 연결되지 않은 게임 오브젝트의 Collider 컴포넌트 수입니다. 게임 오브젝트나 부모 게임 오브젝트에 Rigidbody 컴포넌트가 있는 경우 콜라이더가 정적 콜라이더로 집계되지 않습니다. 이런 콜라이더는 복합 콜라이더라고 하며, 바디의 여러 콜라이더를 Rigidbody 컴포넌트와 동일한 게임 오브젝트에 포함시키지 않고 편리한 방법으로 배열하는 데 유용합니다.
Rigidbody 컴포넌트의 휴면 상태에 관계없이 물리 엔진으로 처리된 Rigidbody 컴포넌트 수입니다.
Trigger Overlaps 오버래핑 트리거 수입니다(페어 수).
Active Constraints 물리 엔진으로 처리된 기본 제약의 수입니다. 제약은 조인트의 빌딩 블록과 충돌 리스폰스로 사용됩니다. 예를 들어 ConfigurableJoint의 선형 또는 회전 자유도를 제한하려면 각 제한마다 기본 제약이 필요합니다.
Contacts 씬의 모든 콜라이더 간 총 접점 페어 수입니다. 트리거 오버랩 페어의 양도 포함됩니다. 접점 페어는 콜라이더 페어의 간격이 사용자가 설정할 수 있는 특정 제한보다 작아진 후에 콜라이더 페어마다 생성되므로 아직 접촉하거나 겹치지 않는 Rigidbody 컴포넌트에 대해서도 접점이 생성될 수 있습니다. 자세한 내용은 Collider.contactOffsetContactPoint.separation을 참조하십시오.

참고:

  • 숫자가 씬에서 물리 컴포넌트가 있는 게임 오브젝트의 정확한 수와 일치하지 않을 수 있습니다. 일부 물리 컴포넌트에 영향을 미치는 다른 컴포넌트(예: 조인트 컴포넌트)에 따라 컴포넌트 처리 속도가 다를 수 있기 때문입니다. 특정 물리 컴포넌트가 연결된 게임 오브젝트 수를 정확하게 계산하려면 FindObjectsOfType 함수를 사용해 커스텀 스크립트를 작성해야 합니다.

  • 물리 프로파일러에는 휴면 상태인 Rigidbody 컴포넌트 수가 표시되지 않습니다. 이런 컴포넌트는 물리 엔진과 상호작용하지 않으므로 물리 프로파일러에서 처리되지 않습니다. 휴면 상태인 Rigidbody 컴포넌트에 대한 자세한 내용은 리지드바디 개요: 휴면을 참조하십시오.

물리 프로파일러를 사용하여 성능 문제 파악

물리 시뮬레이션은 메인 로직의 업데이트 루프와 다른 별도의 일정한 업데이트 주기로 실행되고 호출마다 Time.fixedDeltaTime을 통해서만 시간을 앞당길 수 있습니다. 이 차이는 UpdateFixedUpdate의 차이와 비슷합니다. 자세한 내용은 Time 창에 관한 문서를 참조하십시오.

시간이 오래 걸리는 무거운 로직 또는 그래픽스 프레임이 발생하면 물리 프로파일러에서 물리 시뮬레이션을 프레임마다 여러 번 호출해야 합니다. 따라서 이미 리소스를 많이 사용하는 프레임에 더욱 많은 시간과 리소스가 필요하기 때문에 물리 시뮬레이션이 Maximum Allowed Timestep 값(Edit > Project Settings 로 이동한 다음 Time 카테고리를 선택하여 설정 가능)에 따라 일시적으로 중단되기 쉽습니다.

CPU Usage Profiler를 선택하고 Overview 섹션에서 Physics.Processing 또는 Physics.Simulate 호출 횟수를 확인하여 이 상황을 프로젝트에서 감지할 수 있습니다.

Calls 열에 표시된 값이 1인 물리 프로파일러
Calls 열에 표시된 값이 1인 물리 프로파일러

위 그림의 예에서 Calls 열의 값 1은 마지막 논리 프레임 중에 물리 시뮬레이션이 한 번 호출되었음을 나타냅니다.

호출 카운트가 10에 가까우면 문제가 있음을 의미합니다. 문제를 해결하려면 먼저 물리 시뮬레이션 빈도를 줄이십시오. 문제가 계속되면 (물리 프로파일러가 게임 타임에 보조를 맞추기 위해)많은 시뮬레이션 호출을 사용하기 직전에 무거운 프레임을 초래할 수 있는 원인을 확인해야 합니다. 때로는 무거운 그래픽스 프레임으로 인해 나중에 씬에서 물리 시뮬레이션이 더 많이 호출될 수 있습니다.

씬의 물리 시뮬레이션에 대한 자세한 내용을 확인하려면 위 스크린샷처럼 삼각형 화살표를 클릭하여 Physics.Processing 을 확장합니다. 그러면 씬을 업데이트하기 위해 실행되는 물리 엔진 작업의 실제 이름이 표시됩니다. 가장 많이 표시되는 이름은 다음과 같습니다.

  • Pxs: ‘PhysX solver’의 약어로, 조인트에 필요한 물리 엔진 작업입니다. 겹치는 바디의 접촉을 확인하는 데도 필요합니다.

  • ScScene: 씬을 업데이트하고 넓은 페이즈와 좁은 페이즈를 실행하고 바디를 통합(힘과 충격으로 인해 공간에서 바디 이동)하는 데 필요한 작업에 사용됩니다. 2 페이즈 충돌 검사 페이즈의 정의는 계획 알고리즘에 대한 Steven M. LaValle의 연구를 참조하십시오.

오디오 프로파일러
GPU 프로파일러