Сигналы Годо действуют как обработчики событий? - PullRequest
1 голос
/ 30 мая 2019

Я новичок в разработке игр Годо. У меня есть некоторые трудности в понимании того, что является сигналом в Годо. Я посмотрел на официальную документацию, но не смог понять хорошо. Однако у меня возникает ощущение, что эти сигналы являются своего рода обработчиком событий.

Пожалуйста, помогите мне понять, что такое сигнал в Годо и правильно ли мое понимание сигналов как обработчиков событий?

1 Ответ

1 голос
/ 30 мая 2019

Вы правы, signal - это событие, которое вы можете излучать из Node.

emit_signal("signalName") #emit's signal with no data
emit_signal("signalName", whateverDataToSend) #emit's signal with data

Затем вы можете зарегистрироваться для получения уведомлений при срабатывании сигнала, следовательно, connect для сигнала.

nodeWithSignalInIt.connect( String signalName, Object target, String methodToCall)

Примечание: connect необходимо вызывать из узла, в котором есть сигнал

Стоит также отметить, что сигналы могут быть найдены на всех узлах, которые мы используем в Godot, например, если вы хотите получать уведомления о входе коллизии на Area2D, тогда просто подключитесь к этому сигналу area_entered Area2D.

enter image description here

Пример:

func _ready() -> void:
        #NOTE: InteractiveArea is of type Area2D
        $InteractiveArea.connect("mouse_entered", self, "_on_mouse_entered")
        $InteractiveArea.connect("mouse_exited", self, "_on_mouse_exited")
        $InteractiveArea.connect("area_entered", self, "_on_player_entered")
        $InteractiveArea.connect("area_exited", self, "_on_player_exited")

func _on_mouse_entered() -> void:
    mouse_entered = true

func _on_mouse_exited() -> void:
    mouse_entered = false

func _on_player_entered(area: Area2D) -> void:
    print ("Player entered chest opening zone.")
    interaction_zone = true;

func _on_player_exited(area: Area2D) -> void:
    print ("Player exited chest opening zone.")
    interaction_zone = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...