Dialogue Actor always takes priority. When you set the menu panel, can you set the panel by Dialogue Actor if there is one, and otherwise set the panel by actor ID?
I prefer to use responses[0].destinationEntry.ActorID.
The main problem I think is not to set the panel, but the GetPanel() not always return the panel I just set, Could you add something like a condition check to bypass all the checks GetPanel() has, and set the custom panel that just passed in. If this operation has not happen, do getPanel like the old way.
This time It should be alright. Why I didn't think of this way earlier
Could you add this to subtitle control, too?
Alert and TextInput seems work differently.
>The custom TextInput panel must find by name in Sequencer command
>Alert panel can be set in a subclass method of StandardDialogueUI
I don't understand. Say you've called StandardDialogueUI.ForceOverrideMenuPanel(X) to use menu panel X. As soon as you call StandardDialogueUI.ForceOverrideMenuPanel(null), the next call to GetPanel() will work exactly like if you hadn't set menu panel X.
It's just I need to call ForceOverrideMenuPanel(null) on every OnConversationResponseMenu() and OnConversationLine() that don't need to ForceOverride
But actually the check is already happen on every OnConversationResponseMenu() and OnConversationLine(), so it seems keep it in this way is acceptable, I thought was wrong.