• 티스토리 홈
  • 프로필사진
    SiJun-Park
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
SiJun-Park
  • 프로필사진
    SiJun-Park
    • 분류 전체보기 (190)
      • Unity (148)
        • 출시 해보기 (Slime Company) (3)
        • 뱀서류 Project (34)
        • Defense Project (20)
        • FPS Project (30)
        • RPG Project (39)
        • 기타 - 개발 (22)
      • 개발 (35)
        • 임베디드 소프트웨어 (7)
        • 컴파일러 (6)
        • 기계학습 (8)
        • 보안 (8)
        • 그래픽스 (2)
        • 그 외 (4)
      • 코딩문제 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Transform 그리고 StopAllCoroutines 공부 기록
        2026년 01월 01일
        • SiJun-Park
        • 작성자
        • 2026.01.01.:03

        가장 먼저! 새해 복 많이 받으세요!

         

         

         

        본론으로 들어가서 Transfrom은 접근 자체도 비용이 크다고 합니다.

        그렇다고 엄청 비싸지는 않습니다.

         

        왜 비싼가?

        예로 들어서 이동을 할 때 

        transform.position += dir * speed * Time.deltaTime;

         

        이렇게 많이 하는데, 이것을 매 프레임 호출하면 생각보다 비용이 큽니다.

         

        그 이유는 transfrom은C# 객체가 아니라 네이티브 엔진 객체이기 때문에 

        접근 시 C# -> C++ 브리지 비용이 발생하게 됩니다.

         

        그러면 어떻게 줄이냐?

        엄청 줄이는 방법은 없지만 엄청 미세하게 최적화를 할 수 있습니다.

         

        private Transform _tr;
        
        void Awake()
        {
            _tr = transform;
        }
        
        void Update()
        {
            _tr.position += dir * speed * Time.deltaTime;
        }

        위 처럼 Awake 때 넣어 주면 수백 ~ 수천 개의 오브젝트 이동을 할 때 체감이 된다고 합니다.

         

         

        StopAllCoroutines은 뭐가 문제가 있나?

        이 것은 컴포넌트의 모든 코루틴을 강제 중단을 시킵니다. 

        다른 기능 코루틴도 같이 죽게되고 디버깅 지옥과 GC 발생이 하게 됩니다.

         

        다시 정리를 해보자면 

        - StopAllCoroutines는 의도치 않은 코루틴까지 같이 멈춰 디버깅/동작 안정성을 해친다

        - 루틴을 자주 만들면 allocation/GC에 영향이 있을 수 있다(특히 빈번 호출 시)처럼 분리해서 적는 게 안전하다!

        해결 방법은?

        Coroutine aiRoutine;
        aiRoutine = StartCoroutine(AI());
        StopCoroutine(aiRoutine);

         

        위 처럼 캐싱해서 Stop을 해주는게 좋습니다.

         

         

         

         

         

        'Unity > 기타 - 개발' 카테고리의 다른 글

        람다식 / LINQ 회고  (0) 2026.01.06
        foreach / Animator 최적화 공부 기록  (0) 2026.01.01
        GetComponent 공부 기록  (0) 2025.12.30
        Coroutine 공부 기록  (0) 2025.12.30
        Heap과 Stack에 대해 공부  (0) 2025.12.21
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바