비록 간단한 내용이지만, 생각밖으로 놓치고 갈 수도 있을것 같아 정리를 하였다.
0.생명주기 함수(Update,Start)들을 사용하지 않으면 무조건 지워라
이 함수들은 [리플렉션]이란 것때문에 호출만 하고 있어도 동작을 하여 처리비용을 계속 잡아먹기 때문이다.
p.s 리플렉션
리플렉션은 컴파일 시에 알 수 없었던 타입이나 멤버들을 찾아내고 사용할 수 있게 해주는 메커니즘이다.
리플렉션 정보는 해당 블로그 글을 참고하자.
C# - 리플렉션 (Reflection)
리플렉션 리플렉션은 컴파일 시에 알 수 없었던 타입이나 멤버들을 찾아내고 사용할 수 있게 해주는 메커니즘이다. 그러나 다음의 주요한 단점이 존재한다. 리플렉션을 사용하면 컴파일 시에
tsyang.tistory.com
1. 빌드시에 Debug.Log()를 지우고 사용하기
빌드시에도 코드영역에 Debug.Log()가 남아있는경우 여전히 처리비용이 들며 , 해킹의 여지도 있게된다.
왜냐하면 개발시에 디버깅용으로 넣은 Debug.Log()로 데이터를 파악하기떄문이다.
2.LinQ함수 남용 금지
Linq 패키지로 구현이 가능한건 for과if문으로 구현이 가능하기 때문이며 , Linq는 생각밖으로 처리비용이 높기때문이다.
(Linq와 for문 루프 돌린 성능 비교 그래프 참조 필요함)
3.코루틴 사용시 yield return new WaitForSeconds(); 사용 지양하기
사실 코루틴은 반복하게 하는 메서드이지만 new라는 키워드로 인해서 결국 반복적으로 객체를 생성하고
코루틴이 사용이 완료되면 해당 데이터는 가비지가 되어 결국 최적화에 영향을 끼친다.
WaitForSeconds updateTime = new WaitForSeconds(1.0f);
이런식으로 class내에 멤버변수로 선언하고 사용하는것이 올바르다.
4.오브젝트 풀링시 대량의 오브젝트 생성시 자식오브젝트로 생성하지 마라
하이어라키에 오브젝트 풀링을 정리하겠다고 부모오브젝트를 생성하고 그 밑에 만드는데
결국 하이어라키는 계층구조(tree)이기떄문에 나중에 위치가 이동되거나 할때 문제가 발생하기 때문이다.
'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글
| TIL : 2024-11-19(화) :: 같은 기능을 하는 동작이지만 인자값이 다르게 들어가서 동작해야되는 경우 + 전략패턴을 사용하기에 규모가 작은경우 (0) | 2024.11.19 |
|---|---|
| TIL : 2024-11-18(월) :: Unity 에서 CSV 파일 로드해서 사용하기 (0) | 2024.11.18 |
| TIL : 2024-11-14(목) :: ScriptableObject 는 불변 데이터를 사용하는것이 좋다. (0) | 2024.11.14 |
| TIL : 2024-11-12(화) :: 트러블 슈팅 - 데이터 변경하여 사용시에 Class에서 분리해서 사용하자 (0) | 2024.11.12 |
| TIL : 2024-11-11(월) :: MVC 패턴에 대한 간단 분석 (0) | 2024.11.11 |
