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)
  • 인기 글

  • 태그

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

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

티스토리툴바