- Update에 대한 오해 기록용2026년 01월 21일
- SiJun-Park
- 작성자
- 2026.01.21.:06
이 기록을 남기는 이유는 제가 Update/FixedUpdate/LateUpdate에 대해 오해를 하고 있어서 기록을 하였습니다.
저는 이때까지 MonoBehaviour의 생명주기가 너무 아까워서 순수 cs로 돌리고 있었는데,
만약에 MonoBehaviour를 붙여두고 Update를 구현 한 것과 하지 않은 것의 차이가 있을까? 이런 의문이 들었습니다.
Update를 구현 한 것과 하지 않은 것의 차이가 있나?
결론적으론 있습니다.
핵심은 유니티의 생명주기 함수들은 가상 함수가 아닙니다.
void Update() { }위와 같은 코드를 작성하게 되면, 유니티가 이 함수가 있는 것을 알고 호출 대상에 등록을 하게 됩니다.
만약에 적지 않으면 아에 호출 대상이 아니라고 합니다.
그래서 현재 위의 코드 처럼 해두는 것은 아주 아주 안좋은 코드라고 합니다.
그러면 굳이 순수 cs로 왜 돌렸나? 그냥 생명주기 함수를 구현 안하면 똑같지 않나?
이 부분에 대해서 저도 고심을 엄청 많이 했습니다.
하지만 찾아보니 아에 헛수고는 아니더라구요
그 이유를 정리 해보자면
비교 항목 MonoBehaviour 남발 줄이기 Update 호출 여러 번의 C++ <-> C# 왕복 1번 왕복 후 C# 내부 루프 메모리 구조 C#과 C++ 양쪽에 무거운 객체 생성 가벼운 C# 객체만 생성 로딩 속도 Instatiate 할 때마다 느려짐 초기화가 훨씬 빠름 데이터 처리 메모리에 흩어져 있음 (캐시 미스) 메모리에 모여 있음 결론 적으론 Update가 없으면 호출 비용이 0이 되는 건 맞지만, 그 객체를 메모리에 데리고 있는 비용과 생성하는 비용은 여전히 비쌉니다.
'Unity > 기타 - 개발' 카테고리의 다른 글
Culling 공부 (0) 2026.01.11 Addressable & 메모리 로딩 공부 (0) 2026.01.08 Object Pooling 회고 (0) 2026.01.06 람다식 / LINQ 회고 (0) 2026.01.06 foreach / Animator 최적화 공부 기록 (0) 2026.01.01 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)