Maybe you're thinking about the custom actor-specific node colors you can set for the node editor?
Anyway, a quick and easy way to set the color of an actor's name as it's shown in dialogue UIs is to add an Override Actor Name component and wrap the Override Name in rich text codes, such as:
Override Name: <color=yellow>Private Hart</color>
The only caveat is if you use Variable["Conversant"], since this will be set to "<color=yellow>Private Hart</color>" instead of "Private Hart".
Ah thanks, but would that mess with Lua commands and the like?
For example if i have something like Actor["John"].Disposition that I use to set that actors variable, or get it in Sequences, Lua custom script etc. Will this now be changed to color code version?
You just can't use Actor[Variable["Conversant"]].Disposition.
If you need to use Variable["Conversant"], then an alternative way of changing actor name colors is to add a script with an OnConversationLine method. In this method, put rich text around the speaker's name:
Thanks,
I only have two conversant added to dialogue starter trigger. I don't have game object associated with others which if I understood is needed for first method right?
That's correct. A variation of the second method is probably best for your case. You could define a custom field in your Actor template that holds a web color such as "ff0000" for red. Let's say you name that field "NameColor". Then your script becomes:
There's no built-in way to do that. You can create a subclass of UnityUIDialogueUI and override ShowSubtitle. If subtitle.speakerInfo.characterType is CharacterType.PC, you could delay before actually showing it. For example:
using UnityEngine;
using System.Collections;
using PixelCrushers.DialogueSystem;
public class MyDialogueUI : UnityUIDialogueUI {
public override void ShowSubtitle(Subtitle subtitle) {
if (subtitle.speakerInfo.characterType == CharacterType.PC) {
StartCoroutine(ShowSubtitleDelayed(subtitle));
} else {
base.ShowSubtitle(subtitle);
}
}
IEnumerator ShowSubtitleDelayed(Subtitle subtitle) {
yield return new WaitForSeconds(3); // Wait 3 seconds before showing PC subtitle.
base.ShowSubtitle(subtitle);
}
}
Umm I think I have one problem with loading that is caused by delayed sequencer command.
For example lets say I start the game, and after 20 seconds dialogue is to launch. and on 10th second I load my game with different chapter. The dialogue from first scene launches 10 seconds later.
So this is what I'm calling now before loading different chapter.