Version: Unity 6.0 (6000.0)
언어 : 한국어
물리 디버그 창 레퍼런스
입력

물리 프로파일러 모듈

물리 프로파일러 모듈은 물리 시스템이 프로젝트 씬에서 처리한 물리에 대한 정보를 표시합니다. 이 정보는 프로젝트 씬의 물리와 관련된 성능 문제나 예기치 않은 불일치를 진단하고 해결하는 데 도움이 됩니다. 또한 물리 디버그 시각화를 사용하여 애플리케이션의 물리 문제를 더 디버깅하고 이해할 수 있습니다.

프로파일러 창을 열려면 메뉴 Window > Analysis > Profiler로 이동합니다.

물리 프로파일러 모듈
물리 프로파일러 모듈

차트 카테고리

물리 프로파일러 모듈의 차트는 애플리케이션이 물리에 소비하는 시간을 추적합니다. 타이밍은 여러 차트 카테고리로 나뉩니다. 차트의 카테고리 순서를 변경하려면 차트 범례에서 카테고리를 드래그하면 됩니다. 카테고리의 컬러 범례를 클릭하여 표시를 토글할 수도 있습니다. 차트를 클릭하면 차트 아래의 모듈 세부 정보 창에서 각 차트 카테고리의 정확한 숫자 값을 확인할 수 있습니다.

차트 기능
Physics Used Memory 물리 모듈이 사용한 총 메모리양입니다.
Active Dynamic Bodies 휴면 상태가 아닌 Rigidbody 컴포넌트와 ArticulationBody 컴포넌트의 수입니다.
Active Kinematic Bodies 활성 Kinematic Rigidbody 컴포넌트의 수입니다. Kinematic Rigidbody는 프레임에서 MovePosition 또는 MoveRotation이 호출될 때 활성화되고 다음 프레임에서 활성 상태로 유지됩니다.

참고: Unity는 프레임당 여러 번 조인트가 연결된 Kinematic Rigidbody 컴포넌트를 처리할 수 있으며, 이는 표시된 값에 기여합니다.
Dynamic Bodies Rigidbody 컴포넌트와 ArticulationBody 컴포넌트의 수입니다.
Overlaps 오버랩 이벤트의 수입니다. 오버랩 이벤트는 콜라이더가 서로 겹치는 경우를 의미합니다.
Trigger Overlaps 트리거 콜라이더가 있는 오버랩 이벤트 수입니다(2개씩 계산).
Discreet Overlaps Unity가 분리 충돌 검사를 사용하여 해결한 오버랩 이벤트 수입니다.
Continuous Overlaps Unity가 연속 충돌 검사를 사용하여 해결한 오버랩 이벤트 수입니다.
Physics Queries 레이캐스트 및 셰이프캐스트와 같은 총 물리 쿼리의 양입니다.

모듈 세부 정보 창

물리 프로파일러 모듈을 클릭하면 모듈 세부 정보 창에 프로젝트 씬의 물리에 대한 추가 정보가 표시됩니다.

통계 설명
Physics Used Memory 물리 모듈이 사용한 총 메모리양입니다.
Dynamic Bodies Rigidbody 컴포넌트와 ArticulationBody 컴포넌트의 수입니다.
Articulation Bodies 씬의 ArticulationBody 컴포넌트 수입니다.
Active Dynamic Bodies 휴면 상태가 아닌 Rigidbody 컴포넌트와 ArticulationBody 컴포넌트의 수입니다.
Active Kinematic Bodies 활성 Kinematic Rigidbody 컴포넌트의 수입니다. Kinematic Rigidbody는 프레임에서 MovePosition 또는 MoveRotation이 호출될 때 활성화되고 다음 프레임에서 활성 상태로 유지됩니다.

참고: Unity는 프레임당 여러 번 조인트가 연결된 Kinematic Rigidbody 컴포넌트를 처리할 수 있으며, 이는 표시된 값에 기여합니다.
Static Colliders Rigidbody 컴포넌트 또는 ArticulationBody 컴포넌트가 없는 콜라이더의 수입니다.
Colliders Synced 트랜스폼과 동기화된 콜라이더의 양입니다.
Rigidbodies Synced 트랜스폼과 동기화된 Rigidbody 컴포넌트양입니다.
Physics Queries 레이캐스트 및 셰이프캐스트와 같은 총 물리 쿼리의 양입니다.
Total Overlaps 오버랩 이벤트의 수입니다. 오버랩 이벤트는 콜라이더가 서로 겹치는 경우를 의미합니다.
Discreet Unity가 분리 충돌 검사를 사용하여 해결한 오버랩 이벤트 수입니다.
Continuous Unity가 연속 충돌 검사를 사용하여 해결한 오버랩 이벤트 수입니다.
Trigger 트리거 콜라이더가 있는 오버랩 이벤트 수입니다(2개씩 계산).
Modified Unity가 Contact Modification API를 사용하여 수정한 오버랩 이벤트 수입니다.
Broadphase Adds/Removes Broadphase 알고리즘이 추가하거나 제거한 총 콜라이더 수입니다.
Narrowphase Touches 이전 프레임 이후 새로 손실되거나 사라진 총 충돌 이벤트양입니다.

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

물리 프로파일러 모듈은 휴면 중인 Rigidbody 컴포넌트의 수를 표시하지 않습니다. 이러한 컴포넌트는 물리 시스템과 상호 작용하지 않으므로 프로파일러가 처리하지 않습니다. 휴면 Rigidbody 구성 요소에 대한 자세한 내용은 리지드바디 기술 자료를 참조하십시오.

물리 성능 문제 파악

물리 시뮬레이션은 메인 로직의 업데이트 루프와 별도의 고정 주파수 업데이트 주기로 실행되며, 호출당 Time.fixedDeltaTime을 통해서만 시간을 진행시킬 수 있습니다. 이는 UpdateFixedUpdate 간의 차이와 유사합니다. 자세한 내용은 Time 창 기술 자료를 참조하십시오.

로직이나 그래픽스 프레임에 시간이 많이 소요되는 경우 프로파일러는 프레임당 물리 시뮬레이션을 여러 번 호출해야 합니다. 즉, 이미 리소스를 많이 소모하는 프레임에서는 더 많은 시간과 리소스를 소모합니다. 이렇게 하면 Maximum Allowed Timestep 값에 따라 물리 시뮬레이션이 일시적으로 중지될 수 있으며, 값은 Project Settings 창(메뉴: Edit > Project Settings > Time)에서 설정할 수 있습니다.

프로젝트에서 이러한 상황을 감지하려면 CPU Usage Profiler 모듈을 선택하고 계층 구조 뷰의 Overview 섹션에서 Physics.Processing 또는 Physics.Simulate 에 대한 호출 수를 확인하십시오.

Calls 열에서 값이 2인 CPU Usage 프로파일러
Calls 열에서 값이 2인 CPU Usage 프로파일러

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

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

씬의 물리 시뮬레이션에 대한 자세한 내용을 확인하려면 모듈 세부 정보 창의 상단에 있는 검색 상자를 선택하여 Physics.Processing 을 검색한 다음 창 오른쪽 상단에 있는 드롭다운에서 Calls 를 선택합니다. 이렇게 하면 씬을 업데이트하기 위해 실행되는 물리 시스템 작업 이름이 표시됩니다. 가장 많이 표시되는 이름 두 가지는 다음과 같습니다.

  • Pxs: ‘PhysX solver’의 약어로, 조인트에 필요한 물리 시스템 작업입니다. 겹치는 Rigidbody 컴포넌트의 접촉을 확인하는 데도 필요합니다.
  • ScScene: 씬을 업데이트하고, 넓은 페이즈와 좁은 페이즈를 실행하고, Rigidbody 컴포넌트를 통합하는 작업에 사용됩니다(힘과 임펄스로 인해 공간에서 이동).

레거시 물리 프로파일러 모듈

이전 Unity 버전의 기본 모듈인 물리 프로파일러 모듈의 이전 버전을 보려면 Legacy 모드로 전환할 수 있습니다. 이렇게 하려면 물리 프로파일러 모듈의 세부 정보 창 오른쪽 상단에 있는 드롭다운 메뉴에서 Legacy를 선택합니다.

이 모드에서는 이전 Unity 버전에서 저장된 프로파일러 데이터를 로드하고 검사할 수 있습니다. 이 모드로 전환하여 최신 버전의 Unity에서 캡처한 데이터를 확인할 경우 표시된 데이터의 신뢰도와 정확도가 떨어집니다. 새 물리 프로파일러 데이터를 검사하려면 항상 Current 모드를 사용해야 합니다.

Legacy 모드의 CPU Usage 프로파일러
Legacy 모드의 CPU Usage 프로파일러
통계 설명
Active Dynamic 활성 상태인 non-Kinematic Rigidbody 컴포넌트의 수입니다. 활성 Rigidbody는 휴면 상태가 아닙니다.
Active Kinematic 활성 Kinematic Rigidbody 컴포넌트의 수입니다. Kinematic Rigidbody는 프레임에서 MovePosition 또는 MoveRotation이 호출될 때 활성화되고 다음 프레임에서 활성 상태로 유지됩니다.

참고: Unity는 프레임당 여러 번 조인트가 연결된 Kinematic Rigidbody 컴포넌트를 처리할 수 있으며, 이는 표시된 값에 기여합니다.
Static Colliders 게임 오브젝트 또는 부모 게임 오브젝트에 연결된 Rigidbody 컴포넌트가 없는 게임 오브젝트의 Collider 컴포넌트 수입니다.

게임 오브젝트 또는 Rigidbody 컴포넌트가 있는 부모 게임 오브젝트의 Collider 컴포넌트는 정적 콜라이더로 집계되지 않습니다. 이를 복합 콜라이더라고 합니다. 복합 콜라이더는 모든 콜라이더를 Rigidbody 컴포넌트와 같은 게임 오브젝트에 배치하는 대신 바디의 여러 콜라이더를 편리한 방식으로 배열합니다.
Rigidbody 컴포넌트의 휴면 상태에 관계없이 물리 시스템으로 처리된 Rigidbody 컴포넌트 수입니다.
Trigger Overlaps 오버래핑 트리거 수입니다(페어 수).
Active Constraints 물리 시스템이 처리한 기본 제약 수입니다. 제약은 충돌 리스폰스뿐만 아니라 조인트의 빌딩 블록으로 사용됩니다. 예를 들어, ConfigurableJoint의 선형 또는 회전 자유도 제한에는 각 제한에 대한 기본 제약이 포함됩니다.
Contacts 씬 내 모든 콜라이더 간의 전체 접촉 페어 수(트리거 오버랩 페어의 양 포함)입니다. 접촉은 터치 또는 오버랩인 콜라이더 페어입니다. 참고: 콜라이더 페어 사이의 거리가 사용자 설정 가능한 일정 한도 이하로 떨어지면 Unity는 콜라이더 페어당 접촉 페어를 생성합니다. 따라서 아직 터치하거나 오버랩되지 않은 Rigidbody 컴포넌트에 대해 접촉이 생성된 것을 볼 수 있습니다. 자세한 내용은 Collider.contactOffsetContactPoint.separation 기술 자료를 참조하십시오.

추가 리소스

물리 디버그 창 레퍼런스
입력