Godot: 노드에서 커스텀 에디터 경고 표시

3489 단어 godottutorial
Area2D 또는 KinematicBody2D 노드에서 볼 수 있는 사용자 지정 노드에 경고 삼각형을 추가하고 싶었던 적이 있습니까? 글쎄, 실제로 꽤 쉽기 때문에 당신은 운이 좋은 것입니다!

이 예에서는 Enemy 하위 노드가 필요한 사용자 지정Sprite 노드를 생성합니다. 이렇게 하면 목적에 맞게 기능을 확장할 수 있는 좋은 출발점이 됩니다.

먼저 Node2D(또는 Enemy에서 상속하려는 노드)에서 상속하는 새 스크립트를 만듭니다. 내 파일Enemy.gd을 호출하겠습니다.

클래스 이름을 Enemy로 정의하고 tool 키워드를 추가합니다. 이렇게 하면 편집기에서 코드를 실행하고 필요한 오류를 표시할 수 있습니다. 여기서 한 가지 참고 사항은 알아야 할 몇 가지 주의 사항이 있으므로 tool 키워드에 대한 설명서를 읽는 것이 좋습니다.

스크립트 상단은 다음과 같아야 합니다.

extends Node2D
tool
class_name Enemy


다음으로 _get_configuration_warning 마법 함수를 추가합니다. 이 함수가 비어 있지 않은 문자열을 반환할 때마다 편집기에 경고가 표시됩니다.

// ...

func _get_configuration_warning():
    return ""


로직을 추가하기 전에 Enemy에 새 Scene 노드를 생성하여 편집기에 경고가 표시되는 것을 볼 수 있습니다. return 문을 변경한 경우 다음과 유사한 내용이 표시됩니다.



직계 자식만 볼 것이므로 get_children 메서드를 사용하고 검사에 Sprite가 포함되어 있으면 간단한 부울 검사를 수행합니다.

func _get_configuration_warning():
    var has_sprite = false

    for child in get_children():
        if child is Sprite:
            has_sprite = true

    if !has_sprite:
        return "Sprite is required"

    return ""

has_sprite라는 부울 변수를 만들고 기본적으로 false로 설정합니다. 그런 다음 모든 자식을 반복하고 자식isSprite인지 확인하고 변수를 true로 설정합니다. 루프 후에 has_sprite 변수가 여전히 false인지 확인하고, 그렇다면 Sprite가 필요하다는 메시지를 반환합니다.

스크립트를 저장하면 메시지와 함께 경고가 표시되고 Sprite를 하위 노드로 추가하면 경고가 제거됩니다.

여기서 멋진 점은 is 키워드입니다.

Tests whether a variable extends a given class, or is of a given built-in type.



이를 사용하여 우리가 만든 다른 노드 또는 다른 사용자 지정 노드를 테스트할 수 있습니다.

다시 말하지만 이것은 매우 간단한 예이지만 필요에 따라 더 확장할 수 있는 좋은 출발점이 될 것입니다.


내 기사를 읽어 주셔서 감사합니다. 정말 많은 의미가 있습니다! ❤️ 피드백이나 의견을 제공해 주세요. 저는 항상 개선하고 의미 있는 토론을 하기 위해 노력하고 있습니다.

👋 다음 시간까지!

좋은 웹페이지 즐겨찾기