Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Переобумовленої функції
Клас Node Godot надає віртуальні функції, які можна перевизначати, щоб оновлювати вузли кожного кадру або під час певних подій, наприклад, коли вони потрапляють у дерево сцен.
У цьому документі представлені ті, якими ви будете користуватися найчастіше.
Дивись також
Під капотом ці функції покладаються на низькорівневу систему сповіщень Godot. Щоб дізнатися більше про це, перегляньте Сповіщення Godot.
Дві функції дозволяють ініціалізувати та отримувати вузли, крім конструктора класу: _enter_tree() і _ready().
Коли вузол потрапляє в дерево сцен, він стає активним, і механізм викликає його метод _enter_tree(). Дочірні елементи цього вузла можуть ще не бути частиною активної сцени. Оскільки ви можете видаляти та повторно додавати вузли до дерева сцени, цю функцію можна викликати кілька разів протягом життя вузла.
У більшості випадків замість цього ви використовуєте _ready(). Ця функція викликається лише один раз за час існування вузла, після _enter_tree(). _ready() гарантує, що всі дочірні елементи першими увійшли до дерева сцен, тому ви можете безпечно викликати get_node() для них.
Дивись також
Щоб дізнатися більше про отримання посилань на вузли, прочитайте Вузли та екземпляри сцени.
Інший пов’язаний зворотний виклик — це _exit_tree(), який движок викликає кожного разу, коли вузол збирається вийти з дерева сцени. Це може бути, коли ви викликаєте Node.remove_child() або коли ви звільняєте вузол.
# Called every time the node enters the scene tree.
func _enter_tree():
pass
# Called when both the node and its children have entered the scene tree.
func _ready():
pass
# Called when the node is about to leave the scene tree, after all its
# children received the _exit_tree() callback.
func _exit_tree():
pass
// Called every time the node enters the scene tree.
public override void _EnterTree()
{
base._EnterTree();
}
// Called when both the node and its children have entered the scene tree.
public override void _Ready()
{
base._Ready();
}
// Called when the node is about to leave the scene tree, after all its
// children.
public override void _ExitTree()
{
base._ExitTree();
}
Два віртуальних методи _process() і _physics_process() дозволяють оновлювати вузол, кожен кадр і кожен кадр фізики відповідно. Для отримання додаткової інформації прочитайте спеціальну документацію: Idle і Physics Processing.
# Called every frame.
func _process(delta):
pass
# Called every physics frame.
func _physics_process(delta):
pass
public override void _Process(double delta)
{
// Called every frame.
base._Process(delta);
}
public override void _PhysicsProcess(double delta)
{
// Called every physics frame.
base._PhysicsProcess(delta);
}
Ще дві важливі вбудовані функції зворотного виклику вузла: Node._unhandled_input() і Node._input(), які ви використовуєте як для отримання, так і для обробки окремих вхідних подій. Метод _unhandled_input() отримує кожне натискання клавіші, клацання мишею тощо, які ще не були оброблені у зворотному виклику _input() або в компоненті інтерфейсу користувача. Ви хочете використовувати його для введення в ігровий процес загалом. Зворотний виклик _input() дозволяє вам перехоплювати та обробляти події введення до того, як _unhandled_input() їх отримає.
Щоб дізнатися більше про введення в Godot, перегляньте Input section.
# Called once for every event.
func _unhandled_input(event):
pass
# Called once for every event before _unhandled_input(), allowing you to
# consume some events.
func _input(event):
pass
// Called once for every event.
public override void _UnhandledInput(InputEvent @event)
{
base._UnhandledInput(@event);
}
// Called once for every event before _UnhandledInput(), allowing you to
// consume some events.
public override void _Input(InputEvent @event)
{
base._Input(@event);
}
Є ще деякі функції, які можна замінити, наприклад Node._get_configuration_warnings(). Спеціалізовані типи вузлів забезпечують більше зворотних викликів, наприклад CanvasItem._draw() для програмного малювання або Control._gui_input() для обробки клацань і введення в елементи інтерфейсу користувача.