Godot 4.2 conectando una señal de un hijo instanciado al padre usando C#

Resuelto DarwinIcesurfer asked hace 7 meses • 0 respuestas

¿Cómo se conecta una señal que se emite desde una escena secundaria al nodo principal?

En mi código, el delegado se crea en un script de una escena instanciada.

[Signal]
public delegate void OnKnobChangeEventHandler(float val);

Entonces se emite la señal.

EmitSignal(nameof(OnKnobChangeEventHandler), value); //value is a float

Intentando conectar esta señal. a los errores principales se generan en el segundo y tercer parámetro del método Connect


private float _heading = 30;
private float _course = 30;
private Label _lbl_heading;
private Label _lbl_course;
public override void _Ready()
{
_lbl_heading = GetNode<Label>("lbl_heading");
_lbl_course = GetNode<Label>("lbl_course");
_courseKnob = GetNode<Node>("Bezel/KnobHeading");
_headingKnob = GetNode<Node>("Bezel/KnobCourse");
_courseKnob.Connect("OnKnobChange", this, OnCourseKnobSignalReceived);

}
private void OnCourseKnobSignalReceived(float value)
{
_course += value;
}
DarwinIcesurfer avatar Feb 16 '24 14:02 DarwinIcesurfer
Aceptado

Sintaxis que funcionó:

_courseKnob.Connect("OnKnobChange", new Callable(this, MethodName.OnCourseKnobSignalReceived));

también: Cuando se emite la señal, se debe eliminar el sufijo EventHandler

La solución ayudada por este sitio web: Documentación Godot

DarwinIcesurfer avatar Feb 16 '2024 07:02 DarwinIcesurfer