C#: Fix Shortcut example

- Follow our code-style and conventions.
- Match the GDScript example more closely.
- Replace `set_events()` method with `events` property.
This commit is contained in:
Raul Santos 2025-06-16 21:36:11 +02:00
parent 46c495ca21
commit 46bd73a4d0
No known key found for this signature in database
GPG key ID: B532473AE3A803E4

View file

@ -16,8 +16,8 @@
var key_event = InputEventKey.new() var key_event = InputEventKey.new()
key_event.keycode = KEY_S key_event.keycode = KEY_S
key_event.ctrl_pressed = true key_event.ctrl_pressed = true
key_event.command_or_control_autoremap = true # Swaps ctrl for Command on Mac. key_event.command_or_control_autoremap = true # Swaps Ctrl for Command on Mac.
save_shortcut.set_events([key_event]) save_shortcut.events = [key_event]
func _input(event): func _input(event):
if save_shortcut.matches_event(event) and event.is_pressed() and not event.is_echo(): if save_shortcut.matches_event(event) and event.is_pressed() and not event.is_echo():
@ -25,39 +25,35 @@
get_viewport().set_input_as_handled() get_viewport().set_input_as_handled()
[/gdscript] [/gdscript]
[csharp] [csharp]
public partial class YourScriptName : Godot.Node using Godot;
public partial class MyNode : Node
{
private readonly Shortcut _saveShortcut = new Shortcut();
public override void _Ready()
{ {
private Godot.Shortcut saveShortcut; InputEventKey keyEvent = new InputEventKey
public override void _Ready()
{ {
// Enable input processing explicitly (optional for Node, but included for clarity) Keycode = Key.S,
SetProcessInput(true); CtrlPressed = true,
CommandOrControlAutoremap = true, // Swaps Ctrl for Command on Mac.
};
saveShortcut = new Godot.Shortcut(); _saveShortcut.Events = [keyEvent];
}
Godot.InputEventKey keyEvent = new Godot.InputEventKey public override void _Input(InputEvent @event)
{ {
Keycode = Godot.Key.S, if (@event is InputEventKey keyEvent &&
CtrlPressed = true, _saveShortcut.MatchesEvent(@event) &&
CommandOrControlAutoremap = true keyEvent.Pressed && !keyEvent.Echo)
};
Godot.Collections.Array<Godot.InputEvent> events = new Godot.Collections.Array<Godot.InputEvent> { keyEvent };
saveShortcut.SetEvents(events);
}
public override void _Input(Godot.InputEvent @event)
{ {
if (@event is Godot.InputEventKey keyEvent && GD.Print("Save shortcut pressed!");
saveShortcut.MatchesEvent(@event) && GetViewport().SetInputAsHandled();
keyEvent.Pressed && !keyEvent.Echo)
{
Godot.GD.Print("Save shortcut pressed!");
GetViewport().SetInputAsHandled();
}
} }
} }
}
[/csharp] [/csharp]
[/codeblocks] [/codeblocks]
</description> </description>