Play시 어느정도 시간이 지나면 프레임 저하와 뚝뚝 끊기는 렉 (병목) 현상이 발생함을 감지 하였고, 이와 같은 문제를 찾는 과정에서 OnTriggerStay의 other.gameObject.Tag = "Player" 이 부분인 문제가 됨을 감지하였다. 이 방법은 느리고 쓰레기를 많이 생성한다고 한다.
그림과 같이 수정후 병목 현상은 사라졌다. 유니티 프로파일러를 사용하여 이러한 부분을 확인할 수 있다.
유니티에서 game Object에서 문자열을 가져오기 위해 문자열의 복사본을 생성합니다. 복사본이 생성되기 때문에 GC(Garbage Collect)가 필요하고 GC로 인해 성능이 떨어지게 된다고 합니다. "Unity 5 Game Optimization by Chris Dickinson"에 따르면 CompareTag() 메서드를 사용하는 것이 최대 27%까지 성능 향상이 가능하다고 합니다.
https://play.google.com/store/apps/details?id=com.wonilmax.daisia
'3Dsoftware > Unity 3D' 카테고리의 다른 글
하나의 오브젝트에 Material이 2개 이상 있는 경우 바꾸는 법. (0) | 2020.12.31 |
---|---|
12 Localization (unity Asset) (2) | 2020.12.17 |
StateMachineBehaviour: Animator (0) | 2020.12.06 |
Animator + Rigidbody: Animate Physics (0) | 2020.12.05 |
Animator 현재 state 애니메이션이 실행중인지 확인 하는 방법: Unity 3D (0) | 2020.11.29 |