반응형

- 문제

 

아래 사진에 표시된 것 같이 Profiler 돌려봤을떄 Physics.SyncRigidbodyTransfom 및 Physics.SyncColliderTransform Cpu 점유율이 높거나 Selfms(지연시간) 높을떄가 있다. (부하현상) 
제 프로젝트에서는 Physics.SyncRigidbodyTransfomPhysics.SyncColliderTransform 의해 부하가 많이 커져 문제점을 파악하려고 하였습니다.

모바일Device 에서 Profiler 돌려보았을때는 점유율이 4~5퍼 정도 먹고 있어 프레임드랍 현상이 심했습니다.

현재 제프로젝트에서는 여러 캐릭터 오브젝트가 NaviMeshAgent를 활용하여 움직을 구현하고 있는데

이로 인해  Physics.SyncRigidbodyTransfom 가 크게 발생하고 있엇습니다.

 

 

 

 

-문제 파악

우선 Physics.SyncRigidbodyTransfom 및 Physics.SyncColliderTransform Cpu 점유를 하고 있는 이유는 

Unity 물리연산에 의한 점유 입니다 .

ProjectSetting -> Physics -> Auto Sync Transform 을 On 하면 Physics.SyncRigidbodyTransfom 및 Physics.SyncColliderTransform 가 발생하게 됩니다.

Auto Sync Transform의 기능은 Rigidbody와 Collider 간의 물리 충돌 연산시 현재 프레임에 에서 물리연산의값이 나타 나도록 하는 기능입니다.

Unity 2017.2 버전 이후부터  Auto Sync Transform On/Off 기능을 추가 된것이고 

이전 버전에서는 항상 Auto Sync Transform가 이루어 졋습니다.

하지만 프로젝트마다 항상 물리적인 연산에 의해 sync가 맞출 이유가 없는데에 서는 부하만 잡으니 위 옵션을 넣은거 같습니다.

 

Auto Sync Transform 을 off 하게 되면 물리적용된 대상이 이전프레임에서 Transform이 유지 되는것을 확인 할수 있습니다. (ex. 두 박스 콜리더가 서로 붙딪힐떄 두 박스간 거리가 완전 0 일때 붙딪히는게 보이는게 아니라 

 붙딪히고 서로 약간씩 뚫고나가고 나서야 붙딪힌 모습을 볼수 잇습니다.)

 

 

어쩃든... Auto Sync Transform을 On하니 부하현상이 발생해서.. Off를 해야겟다고 생각햇습니다.

하지만 Off를 하면 NaviMeshAgent 사용하는 오브젝트는 NaviMeshAgent.SetDestination()에의해움직이지가

않습니다 .... 이유는 찾지는 못햇습니다....

 

 

 

 

 

 

 

- Auto Sync Transform Off 하면서 네비 움직이기 해결하기

Auto Sync Transform Off 하면서 네비 움직이게 하는 방법은 아래 코드와 같이 해결하였습니다

 

 

publice NavMeshAgent nav;

void Start()
{
   nav.updateRotation = false; //네비의해 자동 회전을 끕니다
   nav.updatePosition = false; //네비의해 자동 이동을 끕니다
}


void Move(vector3 moveDestination)
{
  nav.SetDestination(MoveDestination);
  
  //네비의 nav.nextposition 을 현재 오브젝트 위치에 할당
  transform.position = nav.nextposition;

}

 

 

  nav.updateRotation = false , nav.updatePosition = false 로 회전과 이동을 네비에의해 행해지는것을 꺼주고 

수동으로 Position 이동을 해줍니다.

 

 

 

 

 

 

아래 사진처럼 Auto Sync Transform Off후 네비로 수동으로 위치,회전 설정하였을떄 Profiler 에서 

Physics.SyncRigidbodyTransfom  Physics.SyncColliderTransform 가 발견되지 않는것을 확인할수 있습니다.

 

반응형

+ Recent posts