Menu
CoddyTech

値を持つシグナル

CoddyのGodotジャーニー「シグナルと衝突」セクションの一部。レッスン 8/27。

シグナルは、body_enteredがボディを渡すように、値を渡すことができます。宣言するときに、角かっこ内に値を列挙します。

signal collected(points)

同じ順序で、値をemit()に渡します。

collected.emit(points)

collectedに接続されているすべての関数が値を受け取ります。ここでは、Mainのスクリプトがポイントをスコアに加算して表示します。

func _on_gem_collected(points):
	score += points
	print("Score: ", score)

両方の宝石で同じスクリプトが実行されます。小さい宝石のpointsは10、大きい宝石のpointsは25で、それぞれシーン内のノードに設定されています。ですから、手入力した数値ではなく、pointsを渡しましょう。

challenge icon

チャレンジ

簡単

各ジェムが何ポイント分かをmain.gdに伝えるようにしましょう。

  1. gem.gdの先頭でsignal collected(points)を宣言します。
  2. _on_body_enteredの最後で、ジェムのpointsを使ってシグナルを送信します。

「プレイ」を押して両方のジェムの上を歩きます。コンソールにScore: 10、続いてScore: 35と表示されます。その後、「確認」を押します。

自分で試してみよう

extends Area2D

@export var points = 10

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	if not visible:
		return
	visible = false

シグナルと衝突のすべてのレッスン

自分で練習してみよう: Godotプレイグラウンド