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
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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

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