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. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @cygnusprojects - This fix will be in the next release of the Unity UI support package (which will of course require 4.6 RC1).

    Hi @Keitaro3660 - Multiple conversants are supported. Try adding an Override Actor Name component to the NPC. If you temporarily set the Dialogue Manager's Debug Level to Info, the console will log the name of each actor as they speak their lines.

    What GUI system are you using? I'll look into this and make sure there aren't any issues or gotchas.

    Hi @OsefOsef123 - thank you for the detailed analysis, and sorry about the bug. I'll include a fix in the next release, which is scheduled for tomorrow.
     
  2. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Icebox Studios released Adventure Creator v1.40 today. (It's a really nice update, BTW.) If you update to AC v1.40, you'll need to import this updated Dialogue System support package: AdventureCreator_Support_2014-11-12.unitypackage

    It requires v1.40, and also adds a sequencer command ACCam(mode), where mode can be:
    • on: Enables AC camera control immediately.
    • off: Disables AC camera control immediately.
    • idle: Waits until the camera stops, then disables AC camera control.
    There's also a new option for the bridge's Take Camera Control property: "After Stop If Player Control", which automatically works like idle mode above at the start of the conversation.
     
  3. PhosphorUnity

    PhosphorUnity

    Joined:
    Jan 22, 2014
    Posts:
    39
    Have you looked into supporting Advanced AI Pro?
    https://www.assetstore.unity3d.com/en/#!/content/7009

    It works w/ both UFPS + Realistic FPS Prefab, and has AI types that would be well suited for Dialog (NPC Aggressive, NPC Passive) - pretty much have a Skyrim like action-RPG system with all of those combined

    ----
    - The first is (Enemy) which has attacking behavior (melee or ranged or both of them).

    -The second is (NPC Aggressive): It starts as a neutral non-attacking NPC, but when you
    attack it, it will transform into an enemy behavior.

    -The third is (NPC Passive): This has a neutral passive behavior, it can wander around, but
    when you attack it, or when you are within its view range (or both cases) it will try to flee
    away from you, and then continues to wander/idle (This class can be implemented for
    animal behaviors by example, or city civilians).

    -The fourth is (Companion): This is a friendly AI which can be your companion, it follows
    your commands to follow you or to stop in place, and it can be attacked by enemies when
    sen.

    -The fifth is (Defender Ally): This is your ally AI which can be your defender and
    companion. It follows your commands to follow you, or to stay in place and guard
    its area,
     
  4. Keitaro3660

    Keitaro3660

    Joined:
    May 20, 2014
    Posts:
    86
    wow adding Override actor name and change it to the 3rd NPC name on the NPC save the problem!! :D
    now i can make dialogue for that 3 actors
    thanks for the help

    i'm just using unity 4.5 default GUI
     
  5. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @Keitaro3660 - Great! It shouldn't require Override Actor Name except in some circumstances. If you'd like to get to the bottom of that, please feel free to send me an example project. But the important thing is that it's working now! :)

    Hi @stickleZ - what kind of integration would be useful to you?
     
  6. PhosphorUnity

    PhosphorUnity

    Joined:
    Jan 22, 2014
    Posts:
    39
    Hi @stickleZ - what kind of integration would be useful to you?[/QUOTE]

    Being able to walk up to an live (AI NPC Aggressive, NPC Passive), and instigate a dialog tree (interrupt their ambient behavior), if that is possible

    I'm a non programmer, and I haven't really been able to to do it in any system
     
  7. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    I plan to release version 1.3.8 tomorrow. Once it's out the door, I'll put together an example for Advanced AI Pro and make it available here and on the Pixel Crushers download site.

    No need for anything special. To integrate with Advanced AI Pro, just set up your NPC normally as described in in How to Set Up NPCs. Add the NPC's Advanced AI behaviour(s) to Set Component Enabled On Dialogue Event's OnStart and OnEnd lists.

    If you want to change the behaviour at the end of a conversation, use Conditions in the OnEnd section. Every behaviour in the OnStart and OnEnd lists can be conditionally enabled or disabled based on Lua expressions, quest states, tags, or GameObjects.

    Example: A passive villager wanders the village. If you anger him during a conversation, he becomes aggressive.

    Setup:
    1. Add Advanced Npc Passive Ai and Advanced Enemy Ai to your NPC. Enable Advanced Npc Passive Ai and disable Advanced Enemy Ai.
    2. Add Set Component Enabled On Dialogue Event. Set Trigger to OnConversation. Add Advanced Npc Passive Ai and Advanced Enemy Ai to the OnStart and On End sections. Set the OnStart entries to False (disable) and the OnEnd entries to True for Npc Passive Ai and .False for Enemy Ai.
    3. Add the other Dialogue System components as necessary, such as Usable and Conversation Trigger.
    At this point, when you talk to the NPC, it will disable the Advanced AI Pro behaviours during the conversation. At the end of the conversation, it will re-enable Advanced Npc Passive Ai.

    If you want to conditionally enable Advanced Enemy Ai instead, use Conditions. Say you define a variable IsAngry in the dialogue database. It starts False. During the conversation, the player can choose a response that sets it True. In the OnEnd section:
    • Set the entry for Npc Passive Ai to:
      • Lua Condition: Variable["IsAngry"] == false
      • Value: True
    • Set the entry for Npc Enemy Ai to:
      • Lua Condition: Variable["IsAngry"] == true
      • Value: True
    So at the end of the conversation, the appropriate behaviour (passive or enemy) will be enabled based on the value of IsAngry.

    You can also use the SetEnabled() sequencer command in dialogue entries to do the same thing if you don't want to use Set Component Enabled On Dialogue Event. Just enable the behaviour you want the NPC to use. You should probably do this in a dialogue entry that ends the conversation. Otherwise the NPC will start running its behaviour while it's still engaged in conversation.
     
    Last edited: Nov 14, 2014
    hopeful likes this.
  8. PhosphorUnity

    PhosphorUnity

    Joined:
    Jan 22, 2014
    Posts:
    39
    Wow! Thank you so much for the suggestion!!! Can't try it for a couple of weeks, but I'm sure I'll let you know if I get it working!
     
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    The Dialogue System for Unity v1.3.8 has been released!

    You can download it immediately on the Pixel Crushers customer download site. (PM me your invoice number if you need access.) It should be available on the Asset Store in a few days.

    Version 1.3.8:

    Core
    • Unity 5 Support
    • Added: Alert Trigger.
    • Added: Conversation-as-tutorial example.
    • Improved: Dialogue database asset fields are now reorderable in the Dialogue Editor.
    • Improved: Trigger editors (conversation, bark, etc.) now let you choose from popup menus if you don't want to enter text directly.
    • Improved: Lua wizards now also handle Actors, Items, and Locations.
    • Changed: Lua code now runs on group nodes (dialogue entries with Is Group set True) if the group is used.
    • Fixed: Quest observers set to EveryUpdate weren't triggering when quest states were changed through the QuestLog class.
    • Unity UI:
      • Updated to support Unity 4.6 RC1/2.
      • Added: Quest Tracker HUD.
      • Added: Option for template response buttons.
      • Changed: Unity UI portraits are now Images, not RawImages.
    • Unity GUI (Legacy):
      • Improved: Selector & ProximitySelector can now specify GUI style.
    Third Party Support
    • Action-RPG Starter Kit: Improvements to DSSaveLoad.
    • Adventure Creator: Updated for AC v1.40; added ACCam() sequencer command.
    • AI for Mecanim: Added actions to get & set variables and quest states.
    • Chat Mapper: Fixed inconsistency with conversion of pipes to conform to Chat Mapper's behaviour.
    • Cinema Director: Added support.
    • Core GameKit: CoreGameKitSynchroSpawn() now accepts min & max parameters to spawn a random number of entities.
    • plyGame: Updated for plyGame's new item system.
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    An updated support package is available for Action-RPG Starter Kit. It fixes a typo in the test conversation that prevented the dialogue NPC from healing the player, and it hooks up the death prefab in the example scene so the player respawns with the Dialogue System version of the player prefab. You can download the updated package on the Pixel Crushers customer download site or right here.
     
    Last edited: Nov 18, 2014
  11. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Version 1.3.8 is now available on the Asset Store!
     
  12. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    When I import the new version of Dialogue System for Unity it throws an error with UMA:

    Assets/UMA/Editor/UMACrowdRandomSetPropertyDrawers.cs(3,11): error CS0234: The type or namespace name `ReorderableList' does not exist in the namespace `UMA'. Are you missing an assembly reference?
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @hopeful, I'll look into this today. Version 1.3.8 uses Rotorz Reorderable List to let you reorder Dialogue Editor asset fields.

    What version of Unity and UMA are you using?
     
  14. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,684
    Unity 4.6.20 (beta) and UMA 1.2.2 (asset store version).
     
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Thanks! I'll let you know what I find.
     
    hopeful likes this.
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    @hopeful, a UMA contributor made a copy of Rotorz Reorderable List and changed the namespace to UMA but kept the original assembly GUID. This makes it conflict with any products (like the Dialogue System) that use the original, unmodified Rotorz Reorderable List. :-(

    You'll have to back down to the Dialogue System v1.3.7 for now. (Delete your Dialogue System folder before importing v1.3.7.) I'll work on a solution and release it as soon as possible. This is a top priority item for me.
     
    hopeful likes this.
  17. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Hey there, i'm really glad you made the sprites for UI usable! A minor note. In UnityUISubtitleControls method Create Sprite, there should be a check of whether the texture isn't null. Because now if a portrait is missing it throws an error for attempting to access properties of a null thingie. I edited it in my project, so no rush, just thought i should let you know :) Thanks again for your hard work!
     
  18. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Sorry, that's a straight-up bug. Thanks for letting me know! I'll fix it in the next release.
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Version 1.3.8a is now available on the Pixel Crushers customer download page. If you need access, please PM me your Unity Asset Store invoice number.

    Version 1.3.8a
    • No longer uses the open source Rotorz library, so it doesn't conflict with UMA. (If you don't want to delete your Dialogue System folder before updating, just delete the "DLLs/Rotorz" folder.) [Thanks, @hopeful !]
    • Unity UI subtitles handle null textures more gracefully. [Thanks @Teshla !]
     
    hopeful likes this.
  20. hike1

    hike1

    Joined:
    Sep 6, 2009
    Posts:
    401
    Is this the right page to add audio? I add a sequence, it says 'voice, (talk.mp3), could you post a screenshot
    of a 'hello there' example please?

    Would a bark be done differently?

    http://www.pixelcrushers.com/dialog...sequencer_commands.html#sequencerCommandVoice

    Example: Voice(Bob/Hello, LipsyncHello, Idle, Bob) (Plays the audio clip "Bob/Hello" and animation "LipsyncHello" on Bob. When both are done, plays the "Idle" animation on Bob.)
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @hike1 - Yes, you can use sequences in barks in exactly the same way. To play an audio clip and animation (e.g., lipsync animation) in tandem, use the Voice() command. If you only want to play audio, use the Audio() command.

    Say you have an audio clip named "HelloThere". Here are instructions:
    1. Put HelloThere in a Resources folder.
    2. In the bark dialogue entry, set Sequence to: Audio(HelloThere)
    3. Add an Audio Source to the NPC so you can customize it; otherwise the Dialogue System will automatically add one at runtime.



    -------------------

    On an unrelated topic, the customer download page has a simple Choose-Your-Own-Adventure example for anyone who's interested: Choose-Your-Own-Adventure Example. It's bare-bones and a far from the Great American Novel, but it demonstrates how easy it is to set this up in the Dialogue System.
     
  22. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Just wanted to mention the Kickstarter for High Frontier:

    @JoeStrout 's Kickstarter for High Frontier, which endorsed by the Space Frontier Foundation, is in its final week. If you're looking to back a fellow Unity developer's project, this looks like a good one, and time's running out!

    Joe has also written a Japanese Furigana extension for the Dialogue System. I hope to get my part done in the next couple days so we can release it as a free bonus for Dialogue System users. Using the standard dialogue UI system that you're used to, it displays combined kanji and furigana (phonetics), with the ability to hover over words to get definitions in another language!
     
    Last edited: Nov 21, 2014
    Teila and JoeStrout like this.
  23. Sendatsu_Yoshimitsu

    Sendatsu_Yoshimitsu

    Joined:
    May 19, 2014
    Posts:
    691
    This product looks outstanding, but I have two somewhat random questions about its functionality before I commit: first off, a lot of the documentation covers implementing pre-written, pre-structured conversations, but one of the core components of my game requires extremely variable conversation content depending on events that occur during gameplay. Does this have reasonable support for conversations that are essentially pieced together by consulting a list or switch table and sourcing from ten to twenty separate blips of writing based on which switches are set?

    Second, and much less central to my concerns, the documentation on quest design appears to involve hand-writing each quest in lua. As such, I'm wondering if procedural quest design is supported out of the box, such that an infinite number of new quests could be randomly generated based on pre-designated constraints?

    Thank you for your time :)
     
  24. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @Sendatsu_Yoshimitsu - Yes. This is a key element of branching dialogue trees (blips of writing). Conversations are made of lines of dialogue called dialogue entries. Links between dialogue entries are conditional. From any given dialogue entry, you can set conditions that switch to different blips based on Lua conditions, such as the current value of a variable or even the result of your own custom C# function that you've registered with the system. If you don't want to enter Lua by hand, you can use pop-up wizards. Each dialogue entry can also run its own Lua code (or pop-up wizard) to set variable values or call your own custom functions. You can also link across conversations if you want to organize branches of the dialogue tree in different conversations. The built-in Dialogue Editor lets you edit dialogue trees visually like Mecanim or in an outline mode like the editors for BioWare's games.

    You have great timing with this question. The Dialogue System is the foundation for an upcoming procedural quest generator add-on. It's been in alpha for some time, but I'm reworking the design right now based on Unity community feedback. (The functional implementation will basically stay the same; the changes are of a more philosophical design nature about what makes procedural quests fun to play.) The core Dialogue System doesn't provide any features specifically for procedural content generation, but the integrated Lua environment lets you to do it fairly easily. Since you can insert Lua anywhere (in dialogue text, in conditions, in scripts associated with each dialogue entry), you can define generic quest templates and fill them in at runtime with procedurally-generated values.

    I realize that's a lot of information up there. If you have any follow-up questions, please ask!
     
    Teila likes this.
  25. Sendatsu_Yoshimitsu

    Sendatsu_Yoshimitsu

    Joined:
    May 19, 2014
    Posts:
    691
    You answered my questions and then some, thank you for taking the time to write up such a thorough reply! I already purchased it on the strength of the dialog component, and I'll be eagerly awaiting the procedural add-on :)
     
  26. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Thank you for supporting the Dialogue System! The procedural add-on will be a separately-purchasable product. If you have any questions about using the Dialogue System, please post here or email me directly at tony (at) pixelcrushers.com.
     
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    The Dialogue System for Unity v1.3.9 has been released!

    You can download it immediately on the Pixel Crushers customer download site. (PM me your invoice number if you need access.) It should be available on the Asset Store in a few days.

    The big addition is S-Inventory support. It also includes a special sub-package for S-Inventory + Realistic FPS Prefab. There's finally a drop-in solution for dialogue + quests + inventory (+ first-person shooter)!


    Version 1.3.9
    • Note: Rotorz Reorderable List has been removed, since UMA isn't compatible with it. You can delete Dialogue System/DLLs/Rotorz in old v1.3.8 installations.
    • Note: Custom sequencer commands must now be in the PixelCrushers.DialogueSystem.SequencerCommands, PixelCrushers.DialogueSystem, or global namespace.
    Core
    • Improved: In Selector and ProximitySelector, you can now specify a different Actor Transform to send OnUse.
    • Improved: Added LuaTableWrapper.Count property, support for one-dimensional arrays (as well as hashes).
    • Fixed: Dialogue entry passthrough works the same as Chat Mapper now.
    • Fixed: (Unity UI) Fixed null texture handling in subtitles.
    Third Party Support
    • (Chat Mapper) Converter can now batch convert multiple Chat Mapper projects.
    • (S-Inventory) Added support, plus S-Inventory + Realistic FPS Prefab + Dialogue System integration.
    • (Action-RPG Starter Kit)
      • Fixed typo in test conversation command that prevented NPC from healing player.
      • Added DSGameOverC, and death prefab to example.

    Coming up next: ORK Framework support, and several updated video tutorials
     
    Last edited: Nov 24, 2014
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Version 1.3.9 is now available on the Asset Store, too!
     
    TopThreat likes this.
  29. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Hi TonyLi, I have been playing around with the gamesave component and had everything working and then I blew it up again (sigh..). I don't think I understand the concept of applying the game settings after loading.

    How would you take the loading example you have for RFPS (multiscene) and have it save the progress so far, the location info, and then load the new scene AND place the character where he entered and not back at the start point.

    Basically picture a room. I walk out of the room by clicking the door. It saves my game settings, including where my character was when he clicked the door. Then in the other room I click on a door to get back into the room. I would like the level swaps to seem natural but I keep tricking myself...

    Using the gamesaver component I get all sorts of duplicates so I am definitely doing something wrong :(
     
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @LeeAllen - The short answer: I'll fix it tomorrow. (Sorry, I'm out of time today.)

    The long answer: In a lot of projects, such as the RFPS multiscene example, every scene has its own instance of the player GameObject. This is handy because you can play the scene right away in the editor. But it also means each instance has to know how to restore its state.

    The current PersistentPositionData component only saves the player's position in the current level. If you save persistent data in Scene1, it records this information: [ Scene1,x,y,z,rotation ].

    When you load persistent data, it checks the current level. If it matches the recorded level, it applies the position. If the current level is different from the recorded level, it doesn't do anything.

    This works fine to save and load your game (since you're saving and then loading in the same level), but not so well to remember where you were in previous levels. I'll add an option in PersistentPositionData to record position information for all levels that the player has visited.
     
    TopThreat likes this.
  31. thenamesace

    thenamesace

    Joined:
    Jan 25, 2014
    Posts:
    157
    Hi TonyLi Loving this whole s-inventory/rfps/dialogue set up.... i seem to have one problem the pick up examples all work except the health kit i can pick it up in the inventory but cant use it to restore health or hunger or thirst it just puts it in the skills bar along the bottom of the screen .....Is it me missing something? or is this not working i have the newest versions of all 3 packs ...thanks for any help you can give me :)
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @shaunmckay12 - I submitted a request to the S-Inventory developer, since this needs to be in the inventory GUI's source code. I'm trying to leave other products' source code untouched. As soon as he implements the ability to use items, I'll update my code to link it to RFPS. I sent a few more requests to SoumiDelRio and Azuline Studios to address some smaller issues, too, but this is the big one that's missing right now.
     
  33. thenamesace

    thenamesace

    Joined:
    Jan 25, 2014
    Posts:
    157
    Ahh i see nice one thought it was me Lol
     
  34. dshwrd

    dshwrd

    Joined:
    Jul 4, 2012
    Posts:
    2
    TonyLi,

    I'm currently using the Dialogue System with Unity 4.6rc3, and I'm having an issue that I'm not quite sure how to fix. We're trying to get the NPCSubtitles AND the Repsonses to show at the same time, using the new Unity UI. I can get the subtitles to show or I can get the responses to show, but I can not get both to show at the same time. I've tried checking the "Show NPCSubtitles With Responses", but it does not seem to have any affect. Also, is there a way to show the responses immediately? Meaning, as soon as the NPC starts speaking, we want the responses visible on the screen.

    Thanks!
     
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @dshwrd - assign your NPC subtitle controls (e.g., the NPC subtitle line Text control) to the Npc Subtitle and Response Menu > Subtitle Reminder sections. The Npc Subtitle controls are shown while the NPC is delivering its line (e.g., playing typewriter effect, performing voice animation, etc.). The Subtitle Reminder is shown during the response menu. They're separate to give you the option of using different controls with different visual effects.



    In the example UI, I assigned the same NPC Subtitle Line (Text) to both sections.

    There's a delay in the response menu because the NPC's line waits for its Sequence to finish. (You can read more about sequences here.)

    To show responses immediately, inspect the Dialogue Manager GameObject. Change Camera Settings > Default Sequence to:
    Code (csharp):
    1. None()
    if you want to immediately skip to the response menu. (Just "None()" without the "1." line number in front.)

    If you want to control the camera also, perhaps point it at the speaker, try this:
    Code (csharp):
    1. Camera(speaker)
    If you've also entered sequencer commands in a dialogue entry's Sequence field, make sure to use commands that end immediately. For example, there's an Audio() command and an AudioWait() command. Audio() starts an audio clip and ends immediately. AudioWait(), on the other hand, doesn't let the sequence end until the audio clip is done.
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    A patch of user-requested features is available for the Dialogue System v1.3.9. It includes:
    • Improvements to the articy:draft converter. The converter now sets “Is Group” to true on Condition nodes, strips “{font-size:NN;}” from dialogue text in case you forget to turn off “Export Text Markup”, imports custom dialogue fragment fields, and adds a checkbox to use Stage Directions for Dialogue System sequences.
    • Improved PersistentPositionData component that remembers the actor’s last position in every level the actor has visited.
    • Updated Realistic FPS Prefab multi-scene example to use the new feature of PersistentPositionData. (FYI - @LeeAllen)
    The patch is available on the Pixel Crushers customer download site. If you need access, please PM me your Asset Store invoice number.
     
    TopThreat likes this.
  37. TopThreat

    TopThreat

    Joined:
    Aug 7, 2012
    Posts:
    136
    Thank you!! This works great! Thank you so much for taking the time to do all of this support.
     
    Last edited: Nov 26, 2014
  38. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Happy to help!
     
  39. Justinas_Ma

    Justinas_Ma

    Joined:
    May 8, 2014
    Posts:
    31
    Hey there. Will you be implementing the typewriter effect for the 4.6 unity UI?
     
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @Teshla - I think Unity's example project includes a typewriter effect for the new UI. I'll double check. If it doesn't, I'll include one in the next release!
     
  41. LNMRae

    LNMRae

    Joined:
    Dec 28, 2012
    Posts:
    48
    This is great to hear, I was curious if this was still in the works. I think I might have been the first person to request it. Anyway, thanks for all the hard work on this package and the awesome customer support!
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    ORK is a big kit, so it may take some time. If you have any specific requests for integration features, please let me know.
     
  43. dshwrd

    dshwrd

    Joined:
    Jul 4, 2012
    Posts:
    2
    Thank you so much, TonyLi! This solved our issues. Thanks for the quick and helpful response!
     
    TonyLi likes this.
  44. eridani

    eridani

    Joined:
    Aug 30, 2012
    Posts:
    655
    Now that Unity 4.6 is released, will the 4.6 UI become the default UI for Dialogue System? Thank you Tony
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @eridani - Yes, in the sense that all new development will be done with the new Unity UI first, and the focus of new UI features will be to take advantage of everything that Unity UI has to offer. But the Dialogue System will continue to be GUI system-independent, so you'll still be able to use NGUI, Unity GUI, DF-GUI, etc., without any penalty. I'll also gradually include equivalent Unity UI prefabs for the current Unity GUI prefabs so you'll be able to drop a Unity UI prefab into the scene and not have to mess with Unity UI if you don't want to.
     
    Ramsdal, PixelArtist, Teila and 2 others like this.
  46. thomkoled

    thomkoled

    Joined:
    Oct 28, 2014
    Posts:
    11
    Hi, I am trying this great asset., but, I have a small issue. On PC platform everything works great., But I am trying to implement dialogue to my android app.(Nexus4) The issue is on the first call of DialogueManager.StartConversation("test_conversation"); Dialogue shows with delay, and game is stuttering for a while. This issue is on the first call only. Other next calls work perfect. Does anyone know, where could be the problem? Maybe I am missing something. Thanks guys. (U4.6, Dialogue System, the latest releases)
     
  47. Keitaro3660

    Keitaro3660

    Joined:
    May 20, 2014
    Posts:
    86
    hello, please help me to step by step for adding a voice to the dialogue sequencer, and requirement...
    as far as i read in your site, things that i must do and done are :

    1. adding Audio Source component to dialogue manager object
    2. put my dialogue voice in Resources -> sound
    3. i already try to put in the sequencer :
    Audio(01_okay)
    Audio(01_okay, listener)
    AudioWait(01_okay)
    Audio.play(01_okay)

    nothing work...
    the effect is no sound at all and this dialogue get skipped

    i'm sure i got wrong, please help me :(

    anyway :

    Example: Audio(Hahaha, listener) (Plays the "Hahaha" audio clip on the listener's audio source component)

    so what is the "listener"? is it the "game object" that have name listener?
    really lost here, please help.
    sorry if my question is too noob
     
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    Hi @thomkoled - This is by design, but it doesn't have to stutter. Here's an explanation and instructions for how to make it work the way you want. If you have a big dialogue database or a dialogue UI with many large images, Unity can take some time to load them. Conversations don't normally start at the beginning of the game. There's usually a menu screen, then maybe the player runs around a little before starting the first conversation. There's no sense delaying the start of the game to load resources that won't be used right away. This is especially important in web games, where players are impatient, but also mobile games. The Dialogue System loads the dialogue database and dialogue UI the first time it's needed -- in your case, the first conversation.

    However, you can control when the Dialogue System loads the dialogue database and dialogue UI by calling DialogueManager.PreloadMasterDatabase() and DialogueManager.PreloadDialogueUI(). If you don't want to add this to a script, you can use the equivalent PlayMaker, plyBlox, or AI for Mecanim actions.

    Hi @Keitaro3660 - If this is in a conversation's dialogue entry, the special keyword "speaker" is the character speaking the line, and "listener" is the other character. Try these steps:
    1. In the Hierarchy, select the character that speaks the line.
    2. Add an AudioSource to the character. This is optional; the Dialogue System will automatically add one if needed, but this step allows you to configure the AudioSource the way you want. Note that you added the AudioSource to the character speaking the line, not the Dialogue Manager GameObject, so the 3D audio source will come from that character's position.
    3. Put the audio clip in a Resources folder. Let's say the clip is named "01_okay" and it's directly inside a Resources folder, not in a subfolder.
    4. Edit your dialogue database. Select the dialogue entry. Set the Sequence field to:
    AudioWait(01_okay)

    The default subject for AudioWait() is speaker, so we can omit it from the command.

    In the screenshot below, I selected a dialogue entry spoken by an NPC named Private Hart. Then I set the entry's Sequence to play the audio file "Resources/01_okay" and wait until it's done. The Audio() command (versus AudioWait()) would start the audio clip and then immediately move to the next dialogue entry.



    To help debug issues, temporarily set the Dialogue Manager's Debug Level to Info. When you get to the dialogue entry, you may see an error message like this in the console:



    The first log is Private Hart's subtitle text.

    The second log is the sequencer command (inside the Sequencer.Play( ... ) string).

    The third log, which is a warning, shows that the subject is Private Hart, and reports that "Clip is null". This means it can't find the audio clip "01_okay" in any Resources folders. If you've put it in a subfolder (say, "Resources/Moon Base/Guard/01_okay"), you need to specify the path, like this:

    AudioWait(Moon Base/Guard/01_okay)
     
    Keitaro3660 likes this.
  49. Keitaro3660

    Keitaro3660

    Joined:
    May 20, 2014
    Posts:
    86
    lol okay, looks like my problem is this

    Put the audio clip in a Resources folder. Let's say the clip is named "01_okay" and it's directly inside a Resources folder, not in a subfolder.

    thanks for this solution, and awesome explanation :D
    AudioWait(Moon Base/Guard/01_okay)

    i prefer to put it in subfolder because it will be more organized :D

    --------------------------

    anyway, really thanks for your always awesome support despite it's a weekend! :D
    i have tried using sound in my dialogue, the result is really cool! thanks again for implementing this awesome asset! :D
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,692
    My pleasure!