diff --git a/core/input/input_map.cpp b/core/input/input_map.cpp index 0dd57f4e6c2..fef1135152a 100644 --- a/core/input/input_map.cpp +++ b/core/input/input_map.cpp @@ -317,6 +317,11 @@ void InputMap::load_from_project_settings() { String name = pi.name.substr(pi.name.find_char('/') + 1); Dictionary action = GLOBAL_GET(pi.name); + + if (!action.has("events")) { + continue; + } + float deadzone = action.has("deadzone") ? (float)action["deadzone"] : DEFAULT_DEADZONE; Array events = action["events"]; diff --git a/editor/settings/project_settings_editor.cpp b/editor/settings/project_settings_editor.cpp index 99e8f61f42d..2916f7d20fd 100644 --- a/editor/settings/project_settings_editor.cpp +++ b/editor/settings/project_settings_editor.cpp @@ -613,6 +613,11 @@ void ProjectSettingsEditor::_update_action_map_editor() { String display_name = property_name.substr(String("input/").size() - 1); Dictionary action = GLOBAL_GET(property_name); + if (!action.has("events")) { + WARN_PRINT_ONCE_ED(vformat("Attempted to load invalid input action from setting at \"%s\". The `input/` prefix should only be used for input actions, and cannot be changed in the settings editor. Consider changing the category.", property_name)); + continue; + } + ActionMapEditor::ActionInfo action_info; action_info.action = action; action_info.editable = true;