Quick answer: Godot 4 C# Callable.Bind values silently dropped at the engine boundary? Marshalling supports specific types; complex bind args become null.

Bind a typed object; engine receives null.

Bind primitive types

int, string, simple structs. Marshalling preserves.

Or use Variant explicitly

Wrap bind in Variant.From; marshalling reads as Variant.

Audit bind types

Each Callable.Bind's type. Complex = candidate for failure.

“Marshalling supports a subset. Complex types may drop.”

If you bind complex args, the Variant wrap is the safe path. Document.

Related reading