Oleg Alexandrov

signal

Назад

Пользовательские сигналы

extends Node2D

signal health_depleted
var health = 10

func take_damage(amount):
    health -= amount
    if health <= 0:
        emit_signal("health_depleted")
extends Node

signal health_changed(old_value, new_value)

func take_damage(amount):
    var old_health = health
    health -= amount
    emit_signal("health_changed", old_health, health)

Пример

Health.gd

extends Node2D

signal gameOver
onready var PlayerNode = get_node("Player")

func _ready():
	PlayerNode.connect("healthChanged", self, "doSomething")

func doSomething(playerHealth):
	print("We changed value of health to: ", playerHealth)
	PlayerNode.disconnect("healthChanged", self, "doSomething")
	emit_signal("gameOver")

Player.gd

extends Sprite

signal healthChanged
var check: int = 0
var playerHealth: int = 100

func _process(_delta):
	if check < 1:
		check += check
		changeHealth(-100)

func changeHealth(value):
	playerHealth = playerHealth + value
	emit_signal("healthChanged", playerHealth)

GameOver.gd

extends Node2D

onready var HealthNode = get_owner()

func _ready():
	HealthNode.connect("gameOver", self, "doSomething")

func doSomething():
	print("Game is Over Do Something ")

Назад