Menu
CoddyTech

你自己的信号

本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 7 课,共 27 课。

你可以为节点定义自己的信号。在脚本顶部声明一个信号,使用 signal:

extends Area2D

signal hit

事情发生时,使用 emit() 发送信号:

func _on_body_entered(body):
	hit.emit()

旧代码可能会使用 emit_signal("hit")。它的作用相同。

尖刺只负责报告有人被击中。被击中后会发生什么,由监听信号的代码决定。这里,Main 上的脚本会监听 hit:

extends Node2D

# 当尖刺有 hit 信号时,Main 会监听它。
func _ready():
	if $Spikes.has_signal("hit"):
		$Spikes.hit.connect(_on_spikes_hit)

func _on_spikes_hit():
	print("Ouch!")
	$Player.modulate = Color(1, 0.42, 0.42)

你很快就会编写这样的监听器。在本课中,你只需要编辑尖刺。

challenge icon

挑战

简单

为尖刺添加一个信号,并在有人踩到尖刺时发送它。

  1. 在 spikes.gd 顶部声明 signal hit。
  2. 在 _on_body_entered 中,用 hit.emit() 发送信号。

按“开始”并走到尖刺上:控制台会显示 Ouch!,你的颜色会变成珊瑚色。然后按“检查”。

亲手试试

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass

信号与碰撞中的所有课

自己练习: Godot 在线编辑器