Переключатель по кнопке
Задача: пользователь нажимает F8, а модуль переключает информационный блок.
inputs.json
Заголовок раздела «inputs.json»{ "Actions": [ { "Name": "TogglePanel", "Type": "Button", "Binding": { "Path": "<Keyboard>/f8" } } ]}После сохранения игра перестроит action map модуля.
main.lua
Заголовок раздела «main.lua»local PanelVisible = truelocal ToggleAction = InputActions:FindAction("TogglePanel")
if ToggleAction == nil then print("TogglePanel action was not found")else ToggleAction:OnPerformed(function() PanelVisible = not PanelVisible end)end
Scheduler:OnFrame(function() if not PanelVisible then return end
ImGui:DrawText( "Panel enabled", Rect.new(24, 140, 240, 40), 18, Color.new(0.5, 1, 0.7, 1), TextAnchor.MiddleLeft )end)Почему используется собственный флаг
Заголовок раздела «Почему используется собственный флаг»В текущей сборке InputAction:Disable() не гарантирует отключение уже зарегистрированного OnPerformed(). Управляйте поведением через PanelVisible или отдельный InputEnabled.
Для удержания
Заголовок раздела «Для удержания»Если действие должно работать, пока кнопка нажата, проверяйте IsPressed() в кадре:
Scheduler:OnFrame(function() if ToggleAction ~= nil and ToggleAction:IsPressed() then ImGui:DrawDebugText("F8 is held") endend)Справочник: InputAction, Scheduler и ImGui.