Hello. I import localizations from csv files. But any importing file rewrites my main language. I can’t add any change into the text on my main language (after localization it will be rewriten to old version). How can I load localization from csv files and avoid this problem?
Hi - What CSV are you importing? Are you using the Dialogue Editor’s Localization Export/Import? If so, UNtick the checkboxes to the right of the languages. When any of these checkboxes are ticked, it will not only import the translation but also update the main text (e.g., Dialogue Text field).

Dialogue System 50% Off - Sale Ends Soon!
The New Year Sale ends in less than 6 hours.
The Dialogue System for Unity, Quest Machine, and Love/Hate are all 50% off until the sale ends in just a few hours.
Whether the story you want to tell is epic or small and personal, you can use the Dialogue System to make it happen. Check out Trent Garlipp’s short but powerful A Walk With Yiayia, made with the Dialogue System, available on Steam and Nintendo Switch, and included in The Washington Post’s curated list of Indie game gems you may have missed in 2022. They write: “I didn’t expect “A Walk With Yiayia” to hit me as hard as it did. It’s only about an hour from start to finish, and it had me in tears probably about half that time. In this bite-sized walking sim, you take a stroll around the neighborhood with your Greek grandmother, who’s lost her confidence after a recent fall.”
Hello guys, I want to buy your asset and wanted to clarify if it supports import/export of excel format (not CSV!!) or analogue of excel SpreadsheetML format?
Very conveniently implemented in this asset
Yes, it supports import of Excel xlsx, as well as formats that better reflect highly branching dialogue such as articy:draft, Arcweave, Chat Mapper, etc. (see Import/Export). Please feel free to try the evaluation version before buying to test the various import formats.
show a screenshot where to click export to get the *.xlsx file?
So this might be quite simple, but I’m stuck and can’t figure out the proper search terms to solve it, so here goes.
How do I have a normal conversation between player and NPC where there are no choices to be made, but the player lines are treated like normal lines that will respect my “always need to click continue” setting? As it is, I’m using the template for VN and when I set an actor as player I either get a “this is a choice, choose it” mode or, if I disable that it’s a choice when there is only one option, it goes through automatically without stopping on the line (can’t even read it). This is really frustrating and I’m not sure what I’m missing.
As an extra question since I’m here, is there a tutorial or good resources on advice for how to customize the given templates and modify stuff on those prefabs without breaking stuff and such?
The Dialogue System imports xlsx. Example:



However, I strongly recommend using a better format for branching dialogue such as the built-in editor, articy:draft, Arcweave, Chat Mapper, etc.
The Dialogue System can export CSV for localization (it’s a more portable format than xlsx) if you need to export/import for translators:

You can also export to Chat Mapper and then export from Chat Mapper to xlsx if you really need xlsx format, but again it’s not a great format for dialogue.
Hi - Please see: How To: Bypass Response Menu When Player Has One Choice
In the same section, you’ll also want to set the Continue Button dropdown to Always (if you haven’t already) to require the player to click to continue.
Yes - there’s a video tutorial series:
Hi Tony,
I have a project that is using the ink engine in unity. ink - inkle's narrative scripting language
I would like to use it together with the dialogue system at runtime.
So the use case is that at runtime, I am loading into the game ink files and then populate the Dialogue system with content from that ink file.
I noticed that Dialogue system has integration support for ink but don’t know the extent of the integration support.
Hi - You can read all about the Dialogue System’s Ink integration here: Ink Integration
And you can try it out before buying by using the Dialogue System’s evaluation version.
Unlike the other formats that the Dialogue System imports into a native Dialogue System dialogue database, the Ink integration runs Inkle’s Ink For Unity plugin under the hood. The integration acts as a front-end that handles the UI, triggers, and interfacing with other Dialogue System features.
Wow, amazing, thank you.
I’m sorry, but the CSV file categorically does not suit me. show where to click to export to xlsx file. Thank you.
Oh I missed these tutorials, and so recent, thank you! And the fix worked, I had everything in place except the Show PC subtitle text.
The Dialogue System imports xlsx. It does not export xlsx. A different asset may suit you better.
About the RPG Builder integration.
Is it possible that the save doesn’t include Dialogue System’s variable?
Just validating before going too deep create other solutions ![]()
The reason I need it is mostly that I can’t check if an RPGB quest is done because it creates a null reference if the player doesn’t know it yet. So variables become very useful to do those checks.
Edit: Meanwhile I made a checkup on start
if(Character.Instance.CharacterData.Quests.Count != 0)
{
foreach (var item in Character.Instance.CharacterData.Quests)
{
if (item.questID == 8 && item.state == QuestManager.questState.completed) DialogueLua.SetVariable("CampfireIsDone", true);
}
}
Hi -
-
Make sure you’re using the latest integration from the Dialogue System Extras page.
-
Use the preconfigured Dialogue Manager prefab in Assets > Pixel Crushers > Dialogue System > Third Party Support > RPG Builder Support > Prefabs. I recommend making a prefab variant of this prefab. That way you can customize it without worrying about overwriting your customizations when you import an updated integration package.
hey small questions about the SMSDialogueUI
1.is there a way for it to persist/keep its data across multiple conversations?
when i start a new conversation, the currently displayed messages will vanish basically.
2.if i were to create a phone “chat” with multiple people, is there any way you’d recommend to store the data?
say player spoke to npc A, and NPC B and NPC C and each one has their “chat windows”
3.is there a way to quickly modify/change the active dialogue system ui? (close the active one, then open the new one?)(the overrideui component, sadly does not close the active ui) (calling the Close function on DialogueUI instances, does not hide it nor close it, it stays visible)
4.Is there a way to switch dialogue uis in the middle of a conversation?
i have created a lua function that assigns
public void UseUI(string newUIName){
AbstractDialogueUI myNewUI = //find the newUI from a list in the class;
var abs = DialogManager.instance.dialogueUI as AbstractDialogueUI
abs.gameObject.SetActive(false)
myNewUI.gameObject.SetActive(true)
DialogManager.instance.dialogueUI = myNewUI.GetComponent<IDialogueUI>();
}
then i registered this function as a lua function, i noticed that, calling this function (From lua side) sort of fails, the text simply no longer continues, or ever shows on the new ui, and i am stuck just watching if that makes sense.
any suggestions?
Yes. Tick the SMSDialogueUI’s Use Conversation Variable checkbox. Before starting the conversation, set the DS variable “Conversation” to the title of the conversation.
Would it work like a phone’s text messaging app? Those apps typically show one conversation at a time, although you can go back and switch to a different conversation at any time. The SMSDialogueUI and Textline starter project (available on the Dialogue System Extras page) both work like that.
I’m not sure exactly what you’re trying to do, but if you want to change UIs mid-conversation you should set the current conversation view’s dialogue UI:
DialogueManager.conversationView.dialogueUI = myNewUI.GetComponent<IDialogueUI>();
If you’re running multiple conversations in parallel (not just switching between them sequentially), you’ll need to access the correct conversationView from DialogueManager.instance.activeConversations. It doesn’t sound like you’re doing this, though, so you can probably disregard this paragraph.
Thank you for the detailed response
about this point, i am not sure how it will effect the save system, perhaps i need to extend it even further, but i found that i need to extend the SMSDialogueUI, so that once we “Open”, we cache the messages, then reassign the instantiated messages to the cloned/cached messages, now when i open the SMSDialogueHelper, i get all of the messages from the last conversation back (i still need to extend it further, so it continiously caches the messages).
i am disliking the fact that i need to store the full game object, as that would make saving difficult, but i guess it’ll do for now, until i tackle the saving system
public override void Open()
{
List<GameObject> clonedMessages = new List<GameObject>();
if (!destroyOldMessages)
{
foreach (var msg in instantiatedMessages)
{
var cloned = GameObject.Instantiate(msg, msg.transform.parent);
cloned.transform.localPosition = msg.transform.localPosition;
cloned.transform.localRotation = msg.transform.rotation;
cloned.transform.localScale = msg.transform.localScale;
clonedMessages.Add(cloned);
var typer = cloned.GetComponentInChildren<TextMeshProTypewriterEffect>();
typer.playOnEnable = false;
}
}
base.Open();
if (!destroyOldMessages)
{
instantiatedMessages = clonedMessages;
}
}
basically, the game will have multiple different DialogueUIs and i thought it’d be a good idea to have the ability to switch in the middle of the conversation, through some lua, so designers do not get lost having to call external code and whatnot.
i am unsure why, but assigning both worked perfectly.
basically i ended up with the following
public void ChangeDialogueUI(string s, bool isMidConv)
{
var newUI = GetUI(s);
if (!newUI)
return;
if (DialogueManager.instance.conversationView != null && isMidConv)
{
ChangeCurrConversationUI(newUI);
}
else
{
ChangeCurrDialogueUI(newUI);
}
}
private void ChangeCurrConversationUI(AbstractDialogueUI newUI)
{
AbstractDialogueUI currConvUI = DialogueManager.instance.conversationView.dialogueUI as AbstractDialogueUI;
if (currConvUI == null)
return;
if (currConvUI.name == newUI.name)
return;
if (currConvUI.isOpen)
currConvUI.Close();
newUI.Open();
DialogueManager.instance.conversationView.dialogueUI = newUI;
DialogueManager.instance.dialogueUI = newUI;
}
private void ChangeCurrDialogueUI(AbstractDialogueUI newUI)
{
AbstractDialogueUI currUI = DialogueManager.instance.dialogueUI as AbstractDialogueUI;
if (currUI.name == newUI.name)
return;
if (currUI && currUI.isOpen)
currUI.Close();
newUI.Open();
DialogueManager.instance.dialogueUI = newUI;
if (DialogueManager.instance.conversationView != null)
{
DialogueManager.instance.conversationView.dialogueUI = newUI;
}
}
and yeah, another feature that i am intending to make is to have a sort of “mini phone” that the player can pull out, and talk to npcs with it, or recieves messages on it.
currently i feel its doable by extending the DialogueSystem, Perhaps, when i pull up the phone, and select the NPC i am talking to, i’d have all of the previous conversations with the given npc stored somewhere, and i load them at that moment, and feed them to the extended SMSdialogueSystem and place them in the “instantiatedMessages”.
no idea what variables to store, but thats something i’ll figure out eventually i guess.
