Search Unity

[RELEASED] Dialogue System for Unity - easy conversations, quests, and more!

Discussion in 'Assets and Asset Store' started by TonyLi, Oct 12, 2013.

  1. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Hi TonyLi,

    i remember that your dialog asset also has an easy language localisation but i think only for the dialogs but would like to know if there is a way to use that also for the new unity ui?
    Is this included or can be used in a way or do you have a suggestion for another asset that will work with yours hand in hand that others told you does the job well?
    If i have to find such a solution myself, what do i have to do that the user can switch to his language in the option menu and your dialog asset will notice that too?

    Edit:
    Maybe i was not clear that i want to change the language not only in game in the dialogs but also all the menu things should change the language as well.
     
    Last edited: Jan 24, 2015
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @RandAlThor - yes, the Dialogue System includes general language localization as well as dialogue localization. The main localization documentation is here.

    Your dialogue localization goes directly into the dialogue database. You can localize any field in the database, such as dialogue text or quest entry text, as described at the top of that page.

    Here are the steps to localize menu items that use the new Unity UI:
    1. Create a localized text table. You can import and export to CSV spreadsheet format if you want to edit it in Excel or send the work to a translator.

    2. Add a Localize UI Text component to the GameObject that has the UI Text component. (Components > Dialogue System > UI > Unity UI > Effects > Localize UI Text). Assign the localized text table. The Text component will now use its original text value as the lookup field into the localized text table.

    3. Set the language in Dialogue Manager > Display Settings > Localization.

    4. You'll probably have a language selection menu. If you do, add an Update Localized UI Texts component to any GameObject in the scene. (Components > Dialogue System > UI > Unity UI > Effects > Update Localized UI Texts) When the user selects a language, configure the event handler to invoke this component's UpdateTexts(string) method. Pass the language code (e.g., "fr" for French) as the parameter to the event handler. You can also specify a PlayerPrefs key if you want this comopnent to automatically save the player's choice to PlayerPrefs and apply it whenever you play the game.

    You can also localize legacy Unity GUI as described here.
     
  3. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,293
    Wow, thank you TonyLi.
    Your tool and support is just great :)
     
  4. MrSpanky

    MrSpanky

    Joined:
    Jan 18, 2015
    Posts:
    11
    Hi tony, when using ur s inventory/rfps example I have a little problem. When I add a new s inventory pick up (weapon) everything works great except that when you unequip the weapon from the equipment menu the weapon doesnt holster. The weapon goes from ur arms to ur inventory, your shotgun example works perfectly and I tried to just dublicate it and change it to the m4 but for some reason it doesnt wanna get holsterd when unequiped. Any ideas?
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Here are some things to check:
    • Tag: Usable
    • Layer: Ragdoll/Pickups
    • Has a collider (e.g., Box Collider)
    • Has a Rigidbody
    • Has a renderer (e.g., Mesh Renderer)
    • Has an SInventory Weapon Pickup script
      • WeaponNumber is set to 6 (for M4) - or whatever number you've assigned on !!!Player Weapons
      • Allow Multiple is checked if the player can have more than one M4 in inventory or equipped
    • Has an Item script
      • [EDIT: Added this:] Item name exactly matches GameObject and prefab name
      • Item Type: 0
      • Equipment Slot: Main Arm
      • Skill Slot: (blank)
      • Usable: unticked
    • Saved it as a prefab in a Resources folder
    If that doesn't help, please post a screenshot of the inspector view. You can collapse the transform, collider, rigidbody, and renderer sections if you want to make the screenshot shorter.
     
    Last edited: Jan 25, 2015
  6. MrSpanky

    MrSpanky

    Joined:
    Jan 18, 2015
    Posts:
    11
    Found the problem ^^ the item name in the item script had to be exactly the same as the prefab for it to work properly
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @MrSpanky - Thanks for reporting your solution. I'll make sure to point this out much more clearly in the next version's documentation. (I also just added it to the checklist in my previous post for the benefit of future readers.)
     
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Zerano RPG Kit 2.1 users: An updated support package is available on the Pixel Crushers customer download site. (PM me your Asset Store invoice number if you need access.) It adds these features:
    • New: Sync RPG to Lua and Sync Lua to RPG actions. Conversations automatically sync, but this gives you the ability to sync whenever you want.
    • New: Syncing of non-equipment items such as nails and wood. To sync non-equipment items, open the PreLoad scene. With the new package, you should see that the Dialogue Manager GameObject’s RPG Kit Bridge script now has a new field named Inventory Container. Expand UI/Camera/Profile/Equipment/Inventory/Inventory, and assign Inventory Container to this field.
     
  9. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Hey there I had some questions about licensing. At some point I think I noticed that you use some libraries that require attribution, but I totally forgot where I saw that and can't find it right now. Could you make (or maybe you do have it and i just cant search properly) a summarized page as to who we must credit and so on?
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @Teshla - No credits or attribution are necessary. Version 1.3.9 (and only 1.3.9) used Rotorz Reorderable List, which requested in-editor attribution, for the Dialogue Editor but it turned out that UMA wasn't compatible with Rotorz, so I removed it.
     
  11. CarterG81

    CarterG81

    Joined:
    Jul 25, 2013
    Posts:
    1,773
    Hi @TonyLi

    Problem: When adding a Continue Button and setting it to "ALWAYS" a continue button, it correctly stops the dialogue, waits for the continue button, but the Continue Button (Unity UI 4.6) is never enabled. If I manually enable it in unity's inspector, i can then click and it correctly works for that one line (it continues) but then it disables it again.


    Details:
    I am trying to set up a Continue Button using Unity's 4.6 UI, and the documentation seems to be missing a few steps?

    http://www.pixelcrushers.com/dialog...ogue_u_i.html#unityUIDialogueUIContinueButton

    And there is no continue button example in the Unity 4.6 UI example scene (Dialogue System/Scripts/Supplemental/UI/Example).

    My confusion here is probably why it isn't working properly.


    Here is what I have done so far:

    1. Created a Unity UI Button, via GameObject-->UI-->Button, named "ContinueButton"
    2. Placed the "ContinueButton" in the DialoguePanel (Hierarchy is: Canvas - > DialogueGUI -> DialoguePanel -> ContinueButton)
    3. In the DialogueGUI's component "Unity UIDialogue UI (Script)", I set the Continue Button for NPC and PC to both be the same button "ContinueButton").
    4. In "Dialogue Manager" I set 'Continue Button' to "Always".
    5. ??????? It says to "Assign the click event UnityUIDialogueUI.OnContinue." but nowhere in the documentation do you attach any script to it, or where you get the UnityUIDialogueUI.OnContinue function from. So what I did, was dragged the "DialogueGUI" gameobject to the OnClick() event so I can call the OnContinue function. As shown:

    ex1.png

    If I enable the ContinueButton, it works perfectly when enabled.
    However, it is always disabled.

    ex2.png
     
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @CarterG81 - All those steps sound correct. In the next version, I'll go into more detail on step #5, but you did it exactly right. Is the button perhaps also assigned to another field, such as the Response Menu Panel or something like that? When the dialogue UI shows a subtitle, it activates the subtitle controls and deactivates the response menu controls.

    I just added an "Example Scene with Continue Button" to the Unity UI Support package. You can download the updated package here. It's set up the way you described.

    If the example scene doesn't help, please feel free to email your dialogue UI to tony (at) pixelcrushers.com. (A unitypackage works best.) I'll be happy to take a look.
     
  13. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    This is all looking really impressive and the quest system looks near perfect for my needs. However, I plan on using the free version of Chat Mapper. Will that suffice if all I want to do is make basic dialogues and quests?
     
  14. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    The free version of Chat Mapper doesn't export, so there's no way to bring it into Unity. You can use the built-in Dialogue Editor, which offers two modes: a Mecanim-style visual node editor and a Neverwinter Nights-style outline editor. You can also use the Neverwinter Nights Toolset or articy:draft. If you plan to buy Chat Mapper Indie or Commercial, PM me with your Dialogue System Asset Store invoice number so I can send you the 10% discount code we've arranged.
     
  15. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    I was worried about that. I'll take a look at the tutorial videos and see if the built-in editor will work for me. I'm not doing anything too wild, so it should be fine.
     
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Chat Mapper is an excellent conversation editor, but the built-in editor is actually better for quests because Chat Mapper doesn't have a concept of quests.
     
  17. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    Well, technically I'm not implementing quests at all, but the quest manager itself looks like something I could use. Or perhaps this could be handled by the dialogue tool. Let me run it by you.

    The main interface the player will be using is a computer that connects to a newsgroup. Allow me to use a crude mockup:



    So the player will be able to expand threads with replies and see a list of response replies (provided the right conditions are met) but will always have a general list of top-level threads. Clicking on a thread title in the top window will display the body of it in the bottom. Is this a thing I could reasonably pull off?
     
  18. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Yes, but not right out of the box. The structure looks more like a conversation in the outline-style editor:

    so writing the content should be fairly straightforward.

    The default dialogue UIs work differently from your mockup, more along the lines of games like BioWare's Mass Effect, Telltale's The Walking Dead, and Bethesda's Skyrim. They alternate between a line from the computer and a menu of player responses.

    That said, you're not locked into the default dialogue UIs. Data and UI are independent in the Dialogue System. You can provide your own UI by implementing a simple C# interface or modifying one of the existing implementations.
     
  19. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    Perfect, then! It's a little more work than I was expecting, but still a lot less than full on implementing my own toolset. I'll make the purchase in a week or so.
     
  20. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Hey, I saw the public property of sequencer on Bark On Idle, Bark On Dialogue Event and on Bark Starter, but nothing on Bark UI's. Also I was wondering as to how long does it take to stop the sequencer?
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Doh, that's a typo. "Bark UI" should be "Bark Trigger". All three of those are trigger components.

    If you don't use one of these trigger components, for example if you call BarkController.Bark() directly, you can get the most recent bark sequencer from the static property BarkController.LastSequencer.

    The sequencer should stop almost immediately. The Sequencer component will disappear after 1 second.
     
  22. CarterG81

    CarterG81

    Joined:
    Jul 25, 2013
    Posts:
    1,773
    Thanks.

    I have absolutely no idea why, but I figured out the problem.
    When messing with the example, I accidentally figured out a solution.

    If I set NPC and PC's "Continue Button" to (NONE), it always activates the Continue Button (like it is suppose to).

    If I set the button to either the NPC or PC's "Continue Button", it will not enable. The solution for me was to just not set anything as the "Continue Button" so it would always enable it.

    It has something to do with the Bark solution you helped me with on your forums. When I omit the changes, it works as it should.

    Code (csharp):
    1.  
    2. public class UnityUIDialogueUI_MyUI : UnityUIDialogueUI
    3. {
    4. /*
    5.    public override void ShowSubtitle(Subtitle subtitle)
    6.    {
    7.      StartCoroutine(BarkController.Bark(subtitle));
    8.    }
    9. */
    10. }
    11.  
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    I forgot you were using barks. Calling the base method (base.Subtitle(subtitle)) would have enabled the continue button. But your solution will work fine in your case, too.
     
  24. Pedro-Alaiagames

    Pedro-Alaiagames

    Joined:
    Apr 15, 2014
    Posts:
    28
    Hello...
    Ive added a component to a Game Object. (This Game Object is one of the Actors of the dialogue) :
    Code (CSharp):
    1. public class MyLuaFunctions : MonoBehaviour {
    2.  
    3. // Use this for initialization
    4. void Start () {
    5.         Lua.RegisterFunction("ExistsObject", null, typeof(MyLuaFunctions).GetMethod("ExistsObject"));
    6. }
    7.  
    8.     public bool ExistsObject(string name)
    9.     {
    10.         return GameObject.Find(name) != null;
    11. }
    12. }
    Then on the Script box on the dialogue entry i add:
    ExistsObject("white")

    On execution, when that dialogue is launched this error happens:

    Dialogue System: Lua code 'ExistsObject("white")' threw exception 'Non-static method requires a target.'

    How do I add the Target?

    Thanx for your help
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @Pedro Alaiagames - Try this:
    Code (csharp):
    1. public class MyLuaFunctions : MonoBehaviour {
    2.  
    3.   void Start () {
    4.     // (Note "this" instead of "null" below.)
    5.     Lua.RegisterFunction("ExistsObject", this, typeof(MyLuaFunctions).GetMethod("ExistsObject"));
    6.   }
    7.  
    8.   public bool ExistsObject(string name) {
    9.     return GameObject.Find(name) != null;
    10.   }
    11. }
     
    Pedro-Alaiagames likes this.
  26. Pedro-Alaiagames

    Pedro-Alaiagames

    Joined:
    Apr 15, 2014
    Posts:
    28
    SOLVED!
    Thank you very much! Im a dumb. :D

     
  27. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Thanks for the previous responses. I've been trying a couple of things with my bark stopping. I need to stop a bark because a new one is being started, so I'm doing it on the same iteration. I'm also using sequences with the barks. The sequence used is a variation on AudioWait (it just pulls the audio clip from a different source, thats all). And I've been trying to play around with continue and stopping sequencers. And since I have "Wait until sequence ends" checked on my bark UI, the stop happens a bit after I call the stop sequence. Since it happens a bit later it calls "Hide" on the second bark which has already started. Would there be any workaround for this? If I elect to start second sequence without finishing the first one, the timing of "Wait until sequence ends" messes up (the second bark gets hidden at the estimated finish time of the first one). If I'll figure something out, I'll post it here.
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @Pedro Alaiagames - I'm glad it's working now! :)

    Hi @Teshla - could you override the Hide method to not hide if another bark is starting?
     
  29. JACKO4590

    JACKO4590

    Joined:
    Nov 25, 2014
    Posts:
    81
    I just reloaded the latest update as i have just put this in my new project and noticed straight away there is an error

    Assets/Dialogue System/Scripts/Editor/Wizards/DialogueManagerWizard.cs(224,81): error CS0029: Cannot implicitly convert type `Camera' to `UnityEngine.Camera'

    Is there a way to work around this or maybe a temp fix?
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @JACKO4590 - You probably have another product, or one of your own scripts, that's defining "Camera" in the global namespace. There's a patch on the customer download site. I PM'ed you access information. If it doesn't address your issue, please let me know what version of Unity you're using, and what other products you've imported into your project.
     
  31. JACKO4590

    JACKO4590

    Joined:
    Nov 25, 2014
    Posts:
    81
    @TonyLi Yes thank you , that patch worked. now i can get back to working :D
    Thanks heaps again
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Happy to help!
     
  33. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    Are dialogue entries stored in an array or a dictionary of some sort? Right now for my BBS system I've basically got an editor script that (quite inefficiently) steps through the entire conversation and stores the message IDs and how they link up in a B-tree. It works, but I feel like there must be a better way.
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @Murgilod - Dialogue entries are stored in a list. It sounds like you may already be past this point, but you can see the whole data structure, fully documented, starting from the top here: DialogueDatabase. It uses the same structure as Chat Mapper. Briefly:
    • DialogueDatabase has a list of conversations (List<Conversation>).
    • Conversation has an ID number and a list of dialogue entries (List<DialogueEntry>).
    • DialogueEntry has an ID number and a list of outgoing links (List<Link>).
    • Link defines a connection from <origin conversationID + dialogueEntryID> to <destination conversationID + dialogueEntryID>.
    Each of these types has a set of accessor methods, such as DialogueDatabase.GetConversation(title or ID). and DialogueDatabase.GetDialogueEntry(conversationID, dialogueEntryID).

    Since only one conversation runs at a time, and it's only in one state at a time, there's no need for any kind of direct pointer references between linked dialogue entries. The overhead involved in maintaining something like that would outweigh any potential benefit, which would be negligible at best.
     
  35. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    Hah! I feel kinda silly because I'd been doing this in the most convoluted way possible. Thanfully, I'm storing all the posts in a single conversation and using the structure to simulate threading, so I don't need to worry about having multiple ones open at a time. This is going to save me a lot of work down the line, so thanks!
     
  36. ocimpean

    ocimpean

    Joined:
    Aug 10, 2013
    Posts:
    128
  37. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Thanks for your suggestion. You got me on the right track. I added a counter to the bark UI which checks how many barks were started (increments on start, decrements on finish) and it hides only when the counter hits zero (no active barks left). A bit of a fiddly solution, but it works well for me.
     
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @ocimpean - Yes, a few developers are using the Dialogue System to create Choose Your Own Adventure (CYOA) games like this. There's a CYOA example project on the Pixel Crushers customer download site. If you buy the Dialogue System, please PM me your Asset Store invoice number so I can give you access to the site.

    Hi @Teshla - Let me know if you have any feature requests for bark UIs that would make this easier in the future.
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    The Dialogue System for Unity v1.4.5 has been released! You can download it immediately on the Pixel Crushers customer download site (PM me your Asset Store invoice number for access), and it should be on the Asset Store in a few days!

    For the next release, I'll be working with Icebox Studios on some additional integration features with Adventure Creator.


    Version 1.4.5

    Core
    • Improved: Added optional MaxWidth field to UnityBarkUIOnGUI.
    • Improved: UnityUIBarkUI now deactivates and reactivates UI elements to run OnEnable effects such as the typewriter effect.
    • Improved: Added extra error checking for issues with dialogue UI response menus.
    • Improved: SetEnabled() sequencer command now handles any type of Behaviour, not just MonoBehaviour.
    • Changed: A warning is now logged if the actor and conversant are same when starting a conversation.
    • Fixed: Double-quotes weren't properly handled in actor names when saving and loading games.
    • Fixed: AudioWait() timing issue with continue button fast forward.
    • Fixed: Had conflicts when there was a class named "Camera" defined in the global namespace.
    Third Party Support
    • articy:draft Converter: Now converts all properties in template feature lists, not just the first property.
    • plyGame support: Added plyGameBridge checkboxes to enable or disable syncing of attributes, factions, skills, and/or items.
    • RPG Kit support: Added "Sync RPG to Lua" and "Sync Lua to RPG" AI for Mecanim actions; added syncing of non-equipment items such as nails and wood.
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Version 1.4.5 is live on the Asset Store!
     
  41. IntegraC

    IntegraC

    Joined:
    Jan 20, 2015
    Posts:
    16
    I am having issue configuring Dialogue System to work in the following manner:

    Basically I have an NPC that gives a kill quest to kill x amount of monsters. He is a farmer and has some farm animals near him, that can be killed if the player so decides to do. I want it so that if the player kills any of those animals, the NPC doesn't care if you helped him kill the x amount of monsters, he just 'wants the player to go away'.

    What I tried so far that didn't work:

    - Adding a 2nd variable to the quest, and tagging the farm animals with the Increment on Destroy script for that particular 'animal' variable, so if it goes up by even 1 his conversation changes. I even put a higher priority if the condition of that animal being killed is greater than or equal to 1 that conversation takes place.
    - Created a 2nd quest that's already active, and assigned the 1 animal variable, but still used the same 1 conversation (as there's only 1 NPC) with its own branch regarding that 2nd quest and that animal variable

    Any help would be appreciated.
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Hi @IntegraC - your first approach should work. I'll put together a quick example and post it here in a bit.
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Please import this package. (Into a temp project is fine.) Everything uses the Recon Troop model, but some are labeled "Monster" and some "Animal". A Farmer gives out the quest, which is defined in one quest and one conversation. There are also two variables: MonsterKills and AnimalKills. IncrementOnDestroy components update these variables. The farmer's conversation checks the values of both variables and updates the quest accordingly.
     
  44. IntegraC

    IntegraC

    Joined:
    Jan 20, 2015
    Posts:
    16
    Thanks for taking the time to put it together. I tried your project, and yes that's exactly how I want it to work. I had the same thing, minus the different levels of importance on the conversations pertaining to killing the wrong thing.

    However, even when using your exact dialogue database, in my scene it's not working. Can I be missing something else? The animals and the monsters have the same IncrementOnDestroy script, only each with their own variable. Anything else that I might be overlooking?
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Are the GameObjects actually being destroyed? In UFPS, for example, entities are deactivated, not destroyed, so IncrementOnDestroy will never trigger. (For UFPS there's a special DialogueSystemOnDie component to handle this.)

    While running, open the Dialogue Editor and click on the Watches tab. At runtime, this tab replaces the Templates tab. Add a watch on your variable, and tick Auto-Update to automatically refresh the display. Then run around and kill a couple monsters or animals. Make sure the variables increment. Maybe there's a typo in the variable name. (Capitalization matters, btw.)


    Before starting the conversation, switch to the Conversations tab and select the farmer's conversation. This will show the paths the conversation takes based on the conditions.


    You can also add a Lua Console to the scene. You can do this at runtime or design time. Then tick the Visible checkbox or press ~+L to open it. In the Lua Console, you can enter Lua commands. It's a quick way to get and set values for testing.


    If none of that helps, please feel free to send your project to tony (at) pixelcrushers.com. I'll be happy to take a look.
     
    IntegraC likes this.
  46. IntegraC

    IntegraC

    Joined:
    Jan 20, 2015
    Posts:
    16
    Ok, thanks for the Watches tab, never knew about it.

    It ended up being the AI that I use for the monsters/animals. The monster I ragdollify on death, the animal I don't, but they both died. I was able to see that it wasn't counting it as a death for whatever reason, so now I need to make ragdolls out of the animals.

    But I really appreciate your quick and professional assistance! If anything, now I have a new tab to 'watch'!

    Also, one other quick thing which I'll message you about so I don't clog the thread.
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    Glad I could help!
     
  48. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    Possibly odd question. Is there an easy way I can get all the dialogue entries in a conversation being spoken by a specific actor?
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,697
    How about this:
    Code (csharp):
    1. var conversation = DialogueManager.MasterDatabase.GetConversation("my-conversation");
    2. var entries = conversation.dialogueEntries.FindAll(entry => entry.ActorID.Equals(actorID));
     
  50. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    This seems like a really powerful system!
    Sorry if this has been answered before, but is it possible with this system to create complete dialog trees in runtime and attach them to a prefab using this system?