Page 1 of 1

How to add own messages to subtitle panel

Posted: Wed Dec 09, 2020 6:44 am
by Maltakreuz
I am making an rpg game and want to add some alert-like messages direct in dialogue subtitle. For example like this:

Code: Select all

Npc: Hello
Player: Quest is done!
Npc: Very well
*party gained 1147 gold*
*party recieved 358753 exp*
Player: Farewell
I just referenced my text-component (textmeshpro) and tryed to add text just with subtitle_comp.text += "my msg\n"; but this does not work. How can i achieve this?

Re: How to add own messages to subtitle panel

Posted: Wed Dec 09, 2020 6:47 am
by Maltakreuz
upd: it works if i just adjust text in inspector, but after i click some response, the subtitle seems to be completly rewritten and my message get lost.

I use wrpg/runic style subtitles, that consume all previous text.

Re: How to add own messages to subtitle panel

Posted: Wed Dec 09, 2020 8:17 am
by Tony Li
Hi,

Here are three ways you can do it:

1. Add the message to your conversation as a dialogue entry node. Then it will be added to the UI like any other node. You can use [var=variable] tags if the values are variable, such as:

Code: Select all

// C# code to set gold amount:
DialogueLua.SetVariable("gold", 1147);
  • Dialogue Text: "*party gained [var=gold] gold*"
2. Or make a Subtitle object at runtime and add it to the UI. Example:

Code: Select all

var speakerInfo = DialogueManager.conversationModel.conversantInfo; // May want to use different CharacterInfo objects.
var listenerInfo = DialogueManager.conversationModel.actorInfo;
var subtitle = new Subtitle(speakerInfo, listenerInfo, FormattedText.Parse("*party gained 1147 gold*"), null, null, null);
var ui = DialogueManager.dialogueUI as StandardDialogueUI;
ui.conversationUIElements.defaultNPCSubtitlePanel.ShowSubtitle(subtitle);
3. Or manually add text to the subtitle panel's accumulatedText property. Example:

Code: Select all

var ui = DialogueManager.dialogueUI as StandardDialogueUI;
var panel = ui.conversationUIElements.defaultNPCSubtitlePanel;
panel.accumulatedText += "*party gained 1147 gold*\n";
panel.subtitleText.text = panel.accumulatedText;
(Edit: Moved \n to end of line.)

Re: How to add own messages to subtitle panel

Posted: Wed Dec 09, 2020 10:39 am
by Maltakreuz
Tony Li wrote: Wed Dec 09, 2020 8:17 am
Great! All three ways are pretty good. I probably use solution 3, it is somehow simplier then 2.

The first is OK too, but I do not really want to add standard messages to every side quest npc dialogue again and again. Thank you very much!

in case someone will find this topic in google: in last solution "\n" should stay after msg, not before.

Re: How to add own messages to subtitle panel

Posted: Wed Dec 09, 2020 12:50 pm
by Tony Li
Glad to help! (I'll also update my example code to move the \n.)