Hi! I’m creating a branching dialogue system between the player and NPCs.
When the player interacts with an NPC, a DataTable is read and a widget is shown line-by-line.
When it reaches the last row, the dialogue ends.
Recently, I updated the system so that if the dialogue includes a branch, the last row now triggers a choice widget instead of ending.
What’s happening:
- In my Blueprint, when a branch is detected (
Branch == True
), execution goes upward to show the choice widget. - The NPC loads to Player Character and displays the branch choice widget.
- I use
Set Input Mode UI Only
andShow Mouse Cursor
so the player can only interact with the UI and not the rest of the game during the choice.
Inside the widget:
- If the player selects “Up”, it sends a BPI event to the NPC:
BPI_BranchUp
. - If the player selects “Down”, it sends
BPI_BranchDown
.
Before sending the event, I do the following cleanup in the widget:
Set Show Mouse Cursor
→ FalseSet Input Mode Game Only
→ to return control to the gameRemove from Parent
→ to destroy the widget- I also use a flag variable called
IsShowMessage
to track if the message window is visible. CurrentPage
resets the DataTable to page 1 to restart the dialogue.
What happens after:
- The NPC receives the branch info via BPI and loads a new DataTable based on the choice.
- From there, dialogue continues as usual from a new path.
The Problem:
Even though I:
- Remove the widget with
Remove from Parent
- Use
Set Input Mode Game Only
- Hide the cursor
→ The camera doesn’t respond to mouse movement after the dialogue ends.
WASD works fine (movement is OK).
Mouse look does NOT work.
I suspect maybe a UI is still being rendered in the background, but I can’t find any remaining widget or mistake in the logic.
Question:
Is there anything wrong with this setup that could cause the camera to stop reacting to mouse movement, even after removing the widget and resetting input mode?