Destroy 와 DestroyImmediate

2023. 8. 25. 10:23·Unity
반응형

Unity에서 객체 관리는 게임 개발의 핵심 측면입니다. 객체를 생성한 만큼, 객체를 제거해야 할 때가 있습니다. Unity는 게임 객체를 파괴하는 두 가지 기본 메서드인 'Destroy'와 'DestroyImmediate'를 제공합니다. 둘 다 유사한 주요 기능을 수행하지만 서로 다른 방식으로 작동합니다. 차이점에 대해 더 자세히 살펴보겠습니다.

 

Unity의 객체 소멸

Unity에서 게임 개체와 해당 구성 요소는 종종 메모리를 소비합니다. 게임이 실행되면서 수많은 개체를 인스턴스화할 수 있습니다. 그러나 이러한 모든 개체를 메모리에 남겨두면 성능 문제가 발생할 수 있으므로 더 이상 필요하지 않을 때 제거해야 합니다.

 

Destroy 메소드

'Destroy'는 게임 개체, 구성 요소 또는 자산을 삭제하는 표준 방법입니다.

Destroy(gameObject);

 

지연 제거: Destroy가 호출되면 개체가 즉시 제거되지 않습니다. 제거 대상으로 표시되고 현재 프레임이 끝나면 삭제됩니다. 즉, 프레임의 나머지 부분에서는 개체에 기술적으로 계속 액세스할 수 있습니다.

안전성: 지연 특성으로 인해 '파괴' 사용 시 예상치 못한 문제나 오류가 발생할 위험이 줄어듭니다.

DestroyImmediate 메소드

DestroyImmediate는 보다 강력한 제거 방법이며 일반적으로 편집기 스크립트에서 사용됩니다.

DestroyImmediate(gameObject);

 

즉시 제거: 이름에서 알 수 있듯이 'DestroyImmediate'는 개체를 즉시 제거합니다. 지연이 없습니다. 메소드가 호출되는 즉시 객체가 삭제됩니다.

주의 필요: 즉각적인 조치를 고려할 때, 특히 루프 내에서 또는 여러 스크립트가 개체를 참조하는 경우 런타임 중에 DestroyImmediate를 사용하는 것은 위험할 수 있습니다. 예기치 않은 null 참조 또는 오류가 발생할 수 있습니다.

에디터 스크립트: 런타임 코드보다는 편집기 스크립트에서 DestroyImmediate를 사용하는 것이 더 일반적입니다. 왜냐하면 편집기에서는 변경 사항이 즉시 적용되기를 원하는 경우가 많기 때문입니다.

 

언제 어느 것을 사용해야 합니까?

런타임: 안전성과 예측 가능성으로 인해 일반적인 런타임 사용에는 Destroy를 사용하세요.

편집기: 편집기 스크립트를 작성 중이고 개체를 즉시 제거해야 하는 경우 DestroyImmediate가 선호되는 선택입니다. 이는 강력한 도구이므로 주의해서 사용해야 한다는 점을 기억하세요.

루프: 루프에 있는 개체를 파괴하려고 할 때는 매우 주의하세요. 이러한 시나리오에서 DestroyImmediate를 사용하면 예상치 못한 동작이 발생할 수 있습니다.

 

결론

Unity에서 객체 관리는 원활하고 효율적인 게임 경험을 보장하는 데 매우 중요합니다. 'Destroy'와 'DestroyImmediate'는 둘 다 개체를 제거하는 방법을 제공하지만, 그 미묘한 차이를 이해하면 현재 시나리오에 따라 사용할 정보를 결정하는 데 도움이 됩니다. 큰 힘에는(DestroyImmediate와 같은) 큰 책임이 따른다는 점을 항상 기억하세요!

저작자표시 비영리 변경금지 (새창열림)

'Unity' 카테고리의 다른 글

Setting : Resolution and Presentation  (0) 2023.09.20
왜 transform.position.x를 직접적으로 수정 할 수 없을까??  (0) 2023.09.04
Animation : Blend Tree  (0) 2023.08.24
SerializeField 이해하기  (0) 2023.08.10
GameObject의 activeSelf, activeInHierarchy  (0) 2023.08.10
'Unity' 카테고리의 다른 글
  • Setting : Resolution and Presentation
  • 왜 transform.position.x를 직접적으로 수정 할 수 없을까??
  • Animation : Blend Tree
  • SerializeField 이해하기
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    라떼우유
    스크립트 실행
    스크립트 실행 순서
    상품 리뷰 크롤링
    스마트스토어리뷰
    list
    unity
    카페24리뷰이관
    리뷰이관
    리스트
    파이썬
    codingtips
    programming101
    learntocode
    ipcamera
    유니티
    셀레니움
    rtsp
    devlife
    믈레코비타멸균우유
    긴유통기한우유
    cv2
    리뷰관리
    쇼핑몰리뷰
    codingcommunity
    appdevelopment
    programmerlife
    Python
    C#
    카페24리뷰
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Destroy 와 DestroyImmediate
상단으로

티스토리툴바