Не работают кнопки при повторном запуске виджета.
1. Проверьте Focus при открытии виджета
При создании или открытии виджета нужно явно указать, какой элемент должен получить фокус.
Шаги:
- Откройте Event Graph вашего виджета.
- В событии
Event Construct
илиOn Initialized
добавьте:
Set Focus
(на нужный элемент, например, кнопку).- Либо
Set Keyboard Focus
, если хотите, чтобы виджет ловил ввод с клавиатуры.
2. Убедитесь, что виджет принимает ввод
Иногда виджет не реагирует на клавиатуру, потому что его Visibility
или Is Focusable
настроены неправильно.
Проверьте:
- В
Details
панели виджета:Visibility
→Visible
(илиSelf Hit Test Invisible
, если не нужно мышь).Is Focusable
→True
.Supports Keyboard Focus
→True
(если есть такая опция).
3. Сброс фокуса при закрытии
Если виджет закрывается и открывается заново, но кнопки не работают, возможно, фокус “застрял” в другом месте.
Решение:
- При закрытии виджета (например, в
Remove from Parent
илиDestruct
):
Reset Focus
(чтобы сбросить текущий фокус).- Либо
Set Focus
на другой элемент (например, на HUD).
4. Проверьте Player Controller
Иногда проблема в том, что Player Controller не передает ввод виджету.
Попробуйте:
- В
Event BeginPlay
вашего Player Controller:
Set Input Mode UI Only
(если нужно только UI).Set Show Mouse Cursor
→True
(если нужен курсор).
Если кнопки не работают при повторном открытии виджета, скорее всего:
- Фокус не устанавливается → Используйте
Set Focus
при создании. - Виджет не принимает ввод → Проверьте
Is Focusable
иVisibility
. - Player Controller блокирует ввод → Используйте
Set Input Mode UI Only
.
Пробуйте сделать это знаю много, но это очень действенные методы. Думаю вам это точно подойдёт~(=^‥^)ノ
3-4 пункты не применимы так как при запуске уровня выставляется game and ui only для взаимодействия с клавиатурой и также включен курсор, remove from parent стоит на выходе из меню настроек, которое срабатывает при помощи евента на клавишу q, но после повторного открытия меню настроек данный эвент перестает работать.
Решил проблему удалив проверку (is valid) перед созданием интерфейса.
Не уверен что правильно сделал, но это решило мою проблему.