[Godot] 부모 노드를 참조하는 속성 Owner

포스팅 Godot 버전 : 4.2

Node Node.Owner

Node 클래스는 많은 고닷 클래스들이 상속하는 클래스입니다. 그러므로 대부분 클래스들이 소유하고 있는 클래스입니다. Node 클래스는 속성 Owner를 가지고 있습니다.

속성 Owner는 부모 노드를 반환해주는 속성입니다. 아래 간단한 예제가 있습니다. 부모 노드의 Name을 출력하거나 참조할 부모가 없으면 “허허허 없단다?”를 출력합니다.

using Godot;
using System;

public partial class NameManager : Node
{
    public override void _Ready()
    {
        try
        {
            GD.Print($"NameManager: {this.Owner.Name}");
        }
        catch (System.NullReferenceException)
        {
            GD.Print("허허허 없단다?");
        }
    }
}

위 스크립트를 소유하고 있는 NameManager 노드가 있다고 가정해 보겠습니다. Node 노드에다가 NameManager 스크립트만 연결한 간단한 노드입니다.

NameManager 노드만 있는 씬을 실행시키면 NullReferenceException 에러가 출력됩니다. Owner는 부모 노드를 참조하기 때문에 부모 노드가 없이 자기 자신만 있는 NameManager 노드는 참조할 부모가 없는 것입니다.

그렇다면 위 처럼 트리가 구성된 씬에서는 어떤 Name을 출력할까요? Sprite2D 일까요 Player 일까요?

정답은 Player를 출력합니다. 가장 위에있는 부모를 참조한다고 생각하면 편합니다.

그렇다면 Player 씬을 자식 노드로 인스턴스한 Main 씬에서는 무엇을 참조할까요? Main 일까요 Player 일까요?

정답은 Player입니다. 인스턴스한 노드이기 때문에 Main이 아니라 Player를 부모로 참조합니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다