[Solved] Multiple "Is Player" Actors and PC Name/Portrait in Response Menu
Posted: Mon Apr 29, 2024 8:29 am
Hi Tony, I am facing an issue in my project using a custom Dialogue UI template and slightly older version of Dialogue System.
To demonstrate and test I have set up a new blank project with the latest version of Dialogue System and the Basic Standard Dialogue UI template and am seeing the same behaviour.
I want multiple characters to be able to make choices in the Response Menu and have set "Is Player" as true on their Actors to achieve this. This is working and Responses appear in the Response Menu for the Actors.
The issue occurs when I add a Portrait Image and Portrait Name to the Response Menu - I always see the Image/Name of the "Player 1" Actor even if "Player 2" is assigned to those Responses in the Dialogue Editor.
To set up the Dialogue Manager to use an Image/Name in the Response Menu I made the following 3 changes.
1. Adjusted the Response Menu Panel, adding new GameObjects for a Portrait Image and Portrait Name and assigning them in its "Standard UI Menu Panel" component.
2. In the Dialogue Manager prefab I changed the following values in the Dialogue System Controller's "Subtitle Settings":
3. Both the NPC and PC Subtitle Panel's "Standard UI Menu Panel" components have their visibility set to "Only during content" as I don't want to see those panels persist behind the Response Menu when the player is selecting Responses.
The results are...
When "Player 1" is picking Responses it works exactly as I hoped, I see the Image and Name for "Player 1" in the Response Menu.
When "Player 2" is picking Responses, I have the issue, the Image and Name for "Player 1" are displayed in the Response Menu. I want to see the Image and Name for "Player 2" instead.
Please let me know if it is possible to achieve what I am hoping for with this type of setup. The Image/Name in the Response Menu will be in a different position compared too the Subtitle Panel so I don't think I can use a persisting Subtitle Panel alongside the Response Menu. If it is possible to have the Response Menu Panel update with the Image/Name for the current "Is Player" Actor that would be perfect, thank you.
In the meantime in the full project I have a functioning workaround but it seems like a messy setup (no need to comprehend this workaround if there is a solution to the above, I can work from that and adjust the full project accordingly). I created an Alternate Subtitle Panel and Alternate Response Menu Panel. The Alternate Subtitle Panel has no visible elements and its "Standard UI Menu Panel" component is set to update the Image/Name components in the Alternate Response Menu Panel. The Alternate Response Menu Panel does not have the Image/Name assigned and so doesn't override them. When I want to use the Response Menu with different Actors, I use Dialogue Actor components to assign the Alternate Panels for those Actors. Then in the conversation I use an extra Dialogue Entry with dummy text in Dialogue Text field (has to have content otherwise the Image/Name are not set?) and a Sequence of "Continue()@0.1" (can't "Continue" immediately otherwise the Image/Name are not set?) prior to branching out to the Dialogue Entries for the Responses. This adds the correct Image/Name to the Alternate Response Panel to achieve what I am wanting. The Alternate Subtitle Panel is never seen as even though it is active for a fraction of a second it has no visible elements.
To demonstrate and test I have set up a new blank project with the latest version of Dialogue System and the Basic Standard Dialogue UI template and am seeing the same behaviour.
I want multiple characters to be able to make choices in the Response Menu and have set "Is Player" as true on their Actors to achieve this. This is working and Responses appear in the Response Menu for the Actors.
The issue occurs when I add a Portrait Image and Portrait Name to the Response Menu - I always see the Image/Name of the "Player 1" Actor even if "Player 2" is assigned to those Responses in the Dialogue Editor.
To set up the Dialogue Manager to use an Image/Name in the Response Menu I made the following 3 changes.
1. Adjusted the Response Menu Panel, adding new GameObjects for a Portrait Image and Portrait Name and assigning them in its "Standard UI Menu Panel" component.
2. In the Dialogue Manager prefab I changed the following values in the Dialogue System Controller's "Subtitle Settings":
- Show NPC Subtitles With Responses: false
- Show PC Subtitles During Line: true
- Continue Button: "Always"
3. Both the NPC and PC Subtitle Panel's "Standard UI Menu Panel" components have their visibility set to "Only during content" as I don't want to see those panels persist behind the Response Menu when the player is selecting Responses.
The results are...
When "Player 1" is picking Responses it works exactly as I hoped, I see the Image and Name for "Player 1" in the Response Menu.
When "Player 2" is picking Responses, I have the issue, the Image and Name for "Player 1" are displayed in the Response Menu. I want to see the Image and Name for "Player 2" instead.
Please let me know if it is possible to achieve what I am hoping for with this type of setup. The Image/Name in the Response Menu will be in a different position compared too the Subtitle Panel so I don't think I can use a persisting Subtitle Panel alongside the Response Menu. If it is possible to have the Response Menu Panel update with the Image/Name for the current "Is Player" Actor that would be perfect, thank you.
In the meantime in the full project I have a functioning workaround but it seems like a messy setup (no need to comprehend this workaround if there is a solution to the above, I can work from that and adjust the full project accordingly). I created an Alternate Subtitle Panel and Alternate Response Menu Panel. The Alternate Subtitle Panel has no visible elements and its "Standard UI Menu Panel" component is set to update the Image/Name components in the Alternate Response Menu Panel. The Alternate Response Menu Panel does not have the Image/Name assigned and so doesn't override them. When I want to use the Response Menu with different Actors, I use Dialogue Actor components to assign the Alternate Panels for those Actors. Then in the conversation I use an extra Dialogue Entry with dummy text in Dialogue Text field (has to have content otherwise the Image/Name are not set?) and a Sequence of "Continue()@0.1" (can't "Continue" immediately otherwise the Image/Name are not set?) prior to branching out to the Dialogue Entries for the Responses. This adds the correct Image/Name to the Alternate Response Panel to achieve what I am wanting. The Alternate Subtitle Panel is never seen as even though it is active for a fraction of a second it has no visible elements.