Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

노드를 모든 곳에서 사용하지 말아야 할 때와 이를 위한 방법

노드는 만들기 쉽지만 한계가 있습니다. 한 프로젝트에서 모든 작업을 위해 수 만 개의 노드를 만들 수도 있습니다. 하지만 각각의 동작이 더 복잡해진다면, 프로젝트의 성능에 부하가 더 크게 더해질 수 있습니다.

Godot는 노드가 사용하는 API를 만들기 위한 더 가벼운 오브젝트를 제공합니다. 프로젝트의 기능을 만들 때 아래와 같은 대안들을 기억해 두세요.

  1. 오브젝트: 가장 가벼운 오브젝트로, 오리지널 오브젝트는 수동으로 메모리 관리를 하는데 사용해야 합니다. 또한 자체 데이터 구조를 만드는 것이 그리 어렵지 않으며 노드 클래스보다 가벼운 노드 구조도 만들 수 있습니다.

    • 예시: Tree 노드를 참고하세요. 이 노드는 임의 개수의 행과 열이 있는 테이블을 위한 고수준 커스터마이제이션을 제공합니다. 화면에 보여지는 데이터는 실제로는 TreeItem 오브젝트들입니다.

    • 장점: API를 더 작은 범위의 오브젝트로 단순화하면 접근성을 향상시키고 반복 시간을 향상시킬 수 있습니다. 전체 노드 라이브러리로 작업하는 대신, 노드가 적절한 하위 노드를 생성하고 관리할 수 있는 축약된 오브젝트의 집합을 만들 수 있습니다.

    참고

    오브젝트들을 다룰 때는 조심해야 합니다. 오브젝트를 변수 안에 저장할 수 있지만, 오브젝트의 참조는 경고 없이 올바르지 않게 될 수 있습니다. 예를 들어 오브젝트의 생성자가 오브젝트를 아무 곳에도 삭제하지 않기로 결정하면, 다음에 오브젝트에 접근하려 하면 오류 상태가 발동합니다.

  2. 참조: 오브젝트보다 오직 조금 더 복잡함. 참조는 자신을 참조하는 지를 추적해서 더 이상 참조하지 않으면 불러온 메모리를 삭제합니다. 이는 데이터가 필요한 커스텀 클래스에 있어 대부분의 경우에 유용합니다.

    • 예시: 파일 오브젝트를 참고하세요. 이것은 자기 자신을 삭제할 필요가 없다는 것 빼면 보통 오브젝트처럼 작동합니다.

    • 장점: 오브젝트와 같습니다.

  3. 리소스: 참조보다 오직 조금 더 복잡함. 리소스는 그들의 오브젝트 속성을 Godot 리소스 파일로 직렬화, 혹은 그 반대로 비직렬화하는데 타고났습니다 (예를 들어, 저장 및 불러오기).

    • 예시: 스크립트, PackedScene (씬 파일 용), 그리고 각 AudioEffect 클래스와 같은 다른 타입들. 각각은 저장되고 불러와 질 수 있습니다. 따라서 이들은 리소스에서 분화된 것들입니다.

    • 장점: 기본의 데이터 저장 방법보다 리소스가 갖는 이점 대부분은 이미 말했습니다. 노드를 통한 리소스 사용의 관점에서, 주요 이점은 인스펙터 호환성에 있습니다. 오브젝트/참조처럼 가벼우면서도, 리소스는 인스펙터에서 볼 수 있고, 속성을 내보낼 수 있습니다. 이를 통해 사용성 측면에서 하위 노드와 같은 목적을 달성할 수 있으면서도, 씬에 그러한 리소스/노드를 갖게 한다면 성능을 향상시킬 수 있습니다.