Search Unity

  1. Good news ✨ We have more Unite Now videos available for you to watch on-demand! Come check them out and ask our experts any questions!
    Dismiss Notice
  2. Ever participated in one our Game Jams? Want pointers on your project? Our Evangelists will be available on Friday to give feedback. Come share your games with us!
    Dismiss Notice

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

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

  1. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    Also, I upgraded to RT-Voice Pro since RT-Voice went away and when I unpack the DS integration package for RT, I get compiler errors. Is this a known issue or is there some operator error on my part?
     
  2. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    Also, thanks @TonyLi for the quick reply above!
     
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @bradbecker - The latest RT-Voice Pro package includes some Standard Assets files, but not enough to compile on their own. I'm sure Stefan will fix this in the next release. In the meantime, you can delete the offending files in Assets / Standard Assets. If you know that you're not using any Standard Assets, you can just delete the whole folder. (Back up your project before deleting, just to be safe.)

    @magique - I haven't forgotten about you. The volume of support requests this week has been insane. I'm triaging the quick ones and making time for the longer ones.
     
  4. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @magique - You don't need the Standard Scene Transition Manager for regular saving & loading of games. But you're correct that EMM doesn't currently tie into the Scene Portal component. I'll work with the EMM dev to add this to the integration. I've written a ScenePortalEMM component that the EMM integration will be able to use.

    When changing scenes, such as when using a Scene Portal, the Dialogue System's Save System records the current state and holds the data in memory. After the new scene is loaded, it applies the data in memory to the new scene. It doesn't need to use a SavedGameDataStorer component because it doesn't store the data anywhere.

    The Save System only uses the SavedGameDataStorer when it's actually storing that data to a saved game slot.

    UCC Saver doesn't touch the camera. Try ticking the Camera Controller script's Init Character On Awake checkbox. This will tell the camera to find the character tagged 'Player'.
     
    magique likes this.
  5. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    Awesome. Thanks for all the tips and info. I will try them out and let you know how it goes.
     
  6. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    @TonyLi I am experiencing a very strange issue now with the save system on Opsive character. When I do a Quick Save and then run the game again, the scene starts with the character's CapsuleCollider in the saved position, but the rest of the character is back to the starting point.

    I've tracked down some of the problem, but not sure where the code is that is causing it. In order to integrate with Emerald AI, one of the steps is to change the CapsuleCollider Tag to Player and the Layer to Character. If I change these to just Untagged and Default then this weird save issue goes away. So, somehow the saver is storing the position of the CapsuleCollider, thinking it's the player, instead of the overall player object itself. You should be able to reproduce easily by changing the Capsule collider to Player tag and Character Layer.

    [EDIT]
    OK, so after trying it with the tag/layer differently, even though the weird issue goes away, the player never actually restores to the saved position. So not sure what's going on here at all.
     
    Last edited: Jan 26, 2019
  7. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    Anyone seen a weird corruption where you get tons of Can't find type: CustomFieldType_Text errors? My variables section is corrupted. I'm going to export and try to import into a new database but this is disconcerting.
     
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @magique - I'll investigate and post back here.


    Hi @bradbecker - Your variables are probably fine. Try exporting to Chat Mapper XML format, then use Tools > Pixel Crushers > Dialogue System > Import > Chat Mapper to import it back into a fresh database.

    Did Unity crash, or did some other event like that happen?

    What version of Unity and the Dialogue System are you using?

    The Dialogue Editor backs up your database on a regular frequency. You can set the frequency in Database > Editor Settings. Look for a backup copy of your database, and duplicate it so you have a copy that the editor won't overwrite with its next backup. This is just for a worst case scenario. Exporting to Chat Mapper XML and importing again should clear it up. And if you don't mind replying back with anything that you can remember happening prior to the issue, please let me know.
     
  9. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    @magique - Which Opsive controller are you using, and what version? I'll need to dig into the code since the UCC Saver component hands off positioning to the Opsive controller; it doesn't actually do any positioning itself.
     
  10. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    Opsive TOC
    It's the latest Opsive Third Person Controller version 2.0.7
     
  11. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    @TonyLi - thanks. Tried backing up to ChatMapper and importing to a new database but it has the same problems. The templates tab is messed up, as is the Variables tab. Some of the conversations are missing all of their connections. I'm trying to look through the XML I exported. Perhaps I'll start deleting variables, quests, and conversations until it goes back to normal.
     
  12. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    @TonyLi - ok, it's doing it for ALL dialogue databases, not just that one, so perhaps something got corrupt in the DS installation. {sigh} Could the templates be corrupted? Where are those stored?
     
  13. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Please check your PMs. I just PM'ed you a patch version. Let me know if it fixes the issue. It has some additional error handling.
     
  14. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Can you send me an example? I haven't been able to replicate the behavior you described. I haven't pulled in Emerald AI, though. But the main player GameObject's Tag is Player and Layer is Character, and it works correctly.
     
  15. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    Thanks, @TonyLi Unfortunately, that didn't seem to help anything. Is there an easy way to reset the Templates in the EditorPrefs?
     
  16. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    If you can open the Dialogue Editor's Templates tab, select Menu > Reset.

    Keep a copy of your original dialogue database. The data is still there. The Dialogue Editor is just unable for some reason to access some temporary cache data stored the database asset. That cache data can be cleared, and your data will be visible again.

    Are you using assembly definition files?

    Please send me the error message that you're seeing. Or screenshots of the issue, or anything that would give me some visibility into what's going on. Thanks.
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    If anyone else experiences the issue that @bradbecker reported, this patch should fix it. The Dialogue Editor scans the project's assemblies (e.g., DLLs) for any custom field types that you may have defined. If your project has other assets that contain DLLs that might not be entirely happy with the version of .NET that you're using, it could cause this scan to fail. The patch allows the Dialogue Editor to gracefully bypass that assembly. (Thanks @bradbecker for your patience and assistance in testing the patch.)

    This update will also be in the upcoming version 2.1.1.
     

    Attached Files:

  18. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    Quick question: now that TextMesh Pro is part of Unity, have you thought about making it the default?
     
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    That's a reasonable question. Not everyone wants to use TMP, and it's not installed by default in many versions of Unity. TMP support is kind of the default in the sense that it's built into the Dialogue System's Standard UI subsystem. You just need to tell the Dialogue System that it's installed by using this step.
     
  20. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    I had used the TextMesh Pro plugin in the Third party support folder. Do I need to wipe that out?
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    It's still supported. But it's mainly for legacy projects that were created in version 1.x when the Standard UI system didn't exist.

    The preferred way to use TMP is to enable TMP support for the Standard UI system and delete/ignore the Third Party Support/TextMesh Pro Support package. The Standard UI system gets new features, whereas the TMP Third Party Support package will remain with its original 1.x features. But if you're already heavily using the TMP Third Party Support package and don't want to switch over, I'll still support it 100%.
     
  22. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    entrytag Descriptor seems to use the entry Title until it hits a node that doesn't have one and then switches to only checking the Node ID for the rest of the conversation. Is that true? If so, how can I change that behavior? More broadly, I have some human actors voiced by audio files and some robot actors voiced by RT-Voice in realtime within each conversation. Each character either pulls in a voice wav named by Actor_Conversation_Title or has your RTVoice actor component on it and voices itself that way.
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @bradbecker - By default, each dialogue entry's entrytag is ActorName_ConversationID_EntryID, where ActorName is the name of the actor assigned to the dialogue entry, ConversationID is the ID number of the conversation, and EntryID is the ID number of the dialogue entry. If you want to change the format, inspect the Dialogue Manager and set Display Settings > Camera & Cutscene Settings > Entrytag Format.

    To get a list of entrytags, export a voiceover script from the Dialogue Editor's Database > Export Database section. Then name your voiceover audio files according to their corresponding entrytags, and put them in a Resources folder or asset bundle.

    More info:
    Set the Sequence fields of your voiced actors' dialogue entries to: AudioWait(entrytag)

    You can leave your RT-Voice actors' Sequence fields blank. The RTVoice Actor component will automatically play RT-Voice text-to-speech.

    If you don't want to set every single dialogue entry's Sequence for human actors, set the Dialogue Manager's Default Sequence to AudioWait(entrytag), and leave the dialogue entries' Sequence fields blank. The dialogue entries for your RT-Voice actors will report that there's no audio file, but it's otherwise harmless and won't affect the conversation.

    If you're using a lipsync animator such as SALSA or LipSync Pro, use the corresponding command instead of AudioWait, such as SALSA(entrytag).
     
  24. Candy-Bomber

    Candy-Bomber

    Joined:
    May 21, 2015
    Posts:
    63
    Hey there, me again. I would appreciate some input please. :)

    I would like to spell-check my dialogue database, specifically just the conversations between actors. My current game-plan is to export the database as a XML, open it in Libre-office to fix everything and then just re-import the fixed tables back in-editor. But I'm kind of terrified that I'll break everything if I start digging too deep, as the only things holding my project together right now is duct-tape and dreams.

    Is there a more efficient way to go about this, or am I on the right track?

    Thank you for your time!
     
    Last edited: Jan 28, 2019
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @Candy-Bomber - The XML export will have a lot of XML tags to bypass. Export to CSV instead. Here are three options:
    1. Dialogue Editor Localization Import/Export: For each language, it exports two CSV spreadsheets: one for conversations' Dialogue Text and Menu Text, another for quest descriptions. This option will give you the simplest spreadsheets. If you only have a single language, that's fine. It will just generate the two spreadsheets for the default language. I recommend this option. It's what FourAttic used for Crossing Souls, and it worked out pretty well for them. (They and Devolver Digital actually wrote the original version of this option and contributed it back to the Dialogue System community.)
    2. Dialogue Editor Export CSV: Exports the entire database into a single huge CSV file. The format is more complex than option #1 because it has to represent complex relationships like links between dialogue entry nodes. Also, this option can't import and export inspector assignments to dialogue entries' OnExecute() event.
    3. i2 Localization: (Requires the asset i2 Localization.) Exports fields of your choosing (e.g., Dialogue Text) to a spreadsheet. i2 has a lot of options, such as using Google Translate to automatically translate to other languages. But it's also an extra expense.
    In any case, open the CSV file(s) in Libre Calc, Google Sheets, Excel, etc., run spell check, and then re-import back into your dialogue database. Keep a backup before this operation just to be safe, and do a test run to make sure you have the process down. Once you get it down, it's pretty quick and easy.

    A fourth option is to export to Chat Mapper. This would also be an extra expense, but I thought I'd at least mention it. Chat Mapper has several export options, including Excel, RTF, and screenplay format.
     
    Candy-Bomber likes this.
  26. Candy-Bomber

    Candy-Bomber

    Joined:
    May 21, 2015
    Posts:
    63
    Thank you. Everything worked out great!
     
    Last edited: Jan 29, 2019
    TonyLi likes this.
  27. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    @TonyLi I wanted to let you know that I got my scene transitions working with Opsive controller. I had to make all the game objects related to Opsive persist across scenes such as Game, Canvas, Main Camera, and Player. Then I removed all those objects from other scenes and just set a Spawn Point referenced in ScenePortal. With that kind of setup, everything works and I don't get any crashes on Wii U when going from scene to scene.

    Now, I just need the new script you developed for EMM so that I can have LoadingScreen during scene transitions and I'm good to go.
     
  28. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Great!

    It's coming soon after version 2.1.1, which is already submitted to the Asset Store. The ScenePortal script's UsePortal() method is now virtual so it can be overridden by EMM to tie the two together.
     
    magique likes this.
  29. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Dialogue System 2.1.1 Released!

    Version 2.1.1 is now available on the Asset Store!

    This update contains many small fixes and improvements. Some highlights include:
    • Typewriter effect can now specify a list of characters to add extra delay, such as punctuation, so you don't have to use RPG Maker codes for them.
    • KeepRectTransformOnscreen component to keep e.g. speech bubbles onscreen.
    • A lot of additions & improvements to articy:draft import.
    • Updated integration for Corgi, i2 Localization, ORK, uMMORPG, and uSurvival.
    • Additional integration features for Inventory Engine, NGUI, Opsive controllers, SALSA (TextSync added), and SLATE.

    Version 2.1.1 Release Notes

    Core:
    • Updated assembly definition files to include Wrappers; renamed Common to PixelCrushers.
    • Changed: Input Device Manager > Control Graphic Raycasters now UNticked by default.
    • Fixed: If Usable GameObject was destroyed while Selector targeted it, Standard UI Select Elements stayed visible.
    • Fixed: MessageSystem bug when removing listeners while sending a message.
    • Fixed: UIPanel timing bug when animations cause outgoing panel to overlap incoming panel.
    • Fixed: SelectorUseStandardUIElements with usables with StandardUsableUI would show regular selection UI at end of conversation.
    • Fixed: Basic & Wheel quest log windows' abandon popup quest title element was unassigned.
    • Fixed: If Standard Bark UI is set to wait for sequence end and second bark happens while waiting for first sequence to end, doesn't hide until second sequence is done.
    • Added: DialogueActor now has Use Menu Panel For { Only Me, Me And Responses To Me }.
    • Added: Response timeout open to choose last response in menu.
    • Added: KeepRectTransformOnscreen to constrain world space UIs to stay onscreen.
    • Added: Template.CreateQuest(), GetNextXXXID() methods.
    • Added: SetMenuPanel() sequencer command.
    • Improved: Typewriter effect now can specify list of characters to add extra delay, such as punctuation.
    • Improved: Standard UI subtitle and menu panel dropdowns increased to allow access to 32 panels.
    • Improved: Unique ID tool verbose output is much faster; reports conversation ID overlaps within the same DB.
    • Improved: Editors now handle issues with outdated third party assemblies more gracefully.
    • Improved: On MacOS, cross conversation link dropdown doesn't use submenus to avoid Unity NSMenuItem bug.
    • Save System: Calling LoadGame() w/Save System > Save Current Scene unticked now also updates internal saved game cache.
    • Save System: ScenePortal.UsePortal() is now virtual.
    • Save System: DialogueSystemSaver now has Raw Dump option (faster, but larger saved game files).
    • Save System: DiskSavedGameDataStorer now supports mobile.
    • TextTable: Large text areas now word wrapped.
    Third Party Support:
    • articy:draft: Added support for AlternatePortraits slot; fixed double-linking in document conversations; slots that reference dialogues and convert as display name now include full conversation path.
    • Corgi: If ConversationZone is already running conversation and Allow Simultaneous Conversations is ticked, activation button no longer restarts conversation.
    • i2 Localication: Updated for 2.8.11.
    • Inventory Engine: Added PersistentInventory for saving, LocalizeInventoryDetails to localize item details.
    • NGUI: Quest tracker HUD now only shows active entries, optionally plus completed entries.
    • Opsive controllers: UCCSaver now saves position in each scene.
    • ORK Framework: Updated for 2.21.0.
    • SALSA: Added TextSync support.
    • SLATE: During conversations, SLATE() moves main camera to final position of cutscene camera; added SLATE Sequencer Settings component.
    • uMMORPG: Updated for 1.155.
    • uSurvival: Updated for 1.34.
     
    Candy-Bomber, hopeful and magique like this.
  30. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    @magique - Here is ScenePortalEMM, which is a version of ScenePortal that works with Easy Main Menu. The attached unitypackage contains two scripts: ScenePortalEMM and ApplySaveSystemOnStart. They require Dialogue System 2.1.1 or any other Pixel Crushers asset whose latest version was released on the Asset Store today. The scripts currently import into the root Assets folder. When I send them to the EMM dev, he can decide where in EMM to place them.

    To set it up:

    1. Import the Dialogue System, Invector, EMM, and the two packages attached to this post.

    2. Edit EMM's LoadingScreen.cs script. Add these 3 lines to the beginning of the LoadSceneProgress() method:
    Code (csharp):
    1.     IEnumerator LoadSceneProgress()
    2.     {
    3. #if PIXELCRUSHERS_SAVESYSTEM
    4.         PixelCrushers.SaveSystem.BeforeSceneChange();
    5. #endif
    3. Edit LoadSlotIdentifier.cs. Add this line of code:
    Code (csharp):
    1.     public void LoadSceneSaved()
    2.     {
    3. #if PIXELCRUSHERS_SAVESYSTEM
    4.         if (PixelCrushers.SaveSystem.HasSavedGameInSlot(slotId))
    5.         {
    6.             PixelCrushers.SaveSystem.BeforeSceneChange(); // <--ADD THIS.
    7.             Time.timeScale = 1;
    4. Add the scripting define symbols PIXELCRUSHERS_SAVESYSTEM and USE_INVECTOR_INVENTORY. (Only add USE_INVECTOR_INVENTORY if you're using an Invector controller that has inventory.)

    5. Add an EMM "Gameplay UI" to each gameplay scene.

    6. Add an ApplySaveSystemOnStart component to a GameObject in each gameplay scene.

    7. Add the Dialogue Manager to your start scene, and optionally other gameplay scenes for easier playtesting. Set up the save system on the Dialogue Manager. (SaveSystem, DataSerializer, and SavedGameDataStorer components).

    8. Untick the player's vThirdPersonController Use Instance checkbox.

    9. Replace any ScenePortal components with ScenePortalEMM and/or add ScenePortalEMMs where you want them.

    10. Add ApplySaveSystemOnStart to a GameObject in each scene.
     

    Attached Files:

    Last edited: Jun 4, 2019
  31. JACKO4590

    JACKO4590

    Joined:
    Nov 25, 2014
    Posts:
    81
    Hey @TonyLi
    Any chance we can get an update on the Unistorm 3rd party package? I'm currently running V3.0.1.1
    Seems the Unistrom 3 changed alot.
    Thanks.
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @JACKO4590 - You got it. The updated UniStorm support package is on the Dialogue System Extras page.
     
  33. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,818
    Awesome. Thanks for this. I will update to 2.1.1 tonight and give this a try.
     
  34. Sigma266

    Sigma266

    Joined:
    Mar 25, 2017
    Posts:
    96
    Hello, Tony. This might just be how the asset works but there's something that worries me. So, my laptop is quite slow and it's annoying, so I have quite a few frame drops while I test my game! So, the issue is... for example, I'm pressing the ENTER key very fast to go through a dialogue between characters while I'm having frame drops, that causes the system to skip some dialogue lines! Even the ones that shouldn't be able to be skipped with keys, but with sequences! Now, it's possible that issue is caused by Unity's player 'cause it kinda sucks, let's be honest, but maybe it could happen in a build too. That's pretty much it, I'm just worried that the system might be very FPS dependent and that someone with a slower PC might have issues while playing.
     
  35. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @Sigma266 - The Dialogue System isn't framerate-dependent. Let's see if we can figure out what's going on in your project. Can you send a copy of your project to tony (at) pixelcrushers.com, or describe how your conversation is set up?
     
  36. Sigma266

    Sigma266

    Joined:
    Mar 25, 2017
    Posts:
    96
    I'm very very sorry, the project got very big and I can't send it right now! But I can say that I'm using a script that turns off the button to continue at every sentence until it's fully displayed, problem is that with these frame drops, that condition is ignored and the lines are skipped!
     
  37. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Can you post or PM me your script? There may be a way to do it that will guarantee it's always called. Also, is there a reason why you don't use the typewriter effect's OnBegin() and OnEnd() events to disable and re-enable the continue button? That might be an easier solution.
     
  38. Sigma266

    Sigma266

    Joined:
    Mar 25, 2017
    Posts:
    96
    I think you were the one who made it for me a long time ago! Here's the script:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using PixelCrushers.DialogueSystem;
    4.  
    5. [RequireComponent(typeof(UnityUIDialogueUI))]
    6. public class Turn_Off_Button_While_Typing_is_Up : MonoBehaviour {
    7.  
    8.     private UnityUIDialogueUI dialogueUI;
    9.     private UnityUITypewriterEffect typewriter;
    10.     public float timeBeforeRelease;
    11.  
    12.     void Awake()
    13.     {
    14.         dialogueUI = GetComponent<UnityUIDialogueUI>();
    15.         if (dialogueUI == null) Debug.LogError("No UnityUIDialogueUI found. Turn_Off_While_Typewriter_Effect_is_Up will not work.");
    16.         typewriter = dialogueUI.dialogue.npcSubtitle.line.GetComponent<UnityUITypewriterEffect>();
    17.         if (typewriter == null) Debug.LogError("No UITypewriterEffect found. Turn_Off_While_Typewriter_Effect_is_Up will not work.");
    18.     }
    19.  
    20.     void OnConversationLine(Subtitle subtitle)
    21.     {
    22.         StopAllCoroutines();
    23.         if (subtitle.speakerInfo.characterType == CharacterType.NPC)
    24.         {
    25.             StartCoroutine(HideContinueButtonWhileTyping());
    26.         }
    27.     }
    28.  
    29.     void OnConversationEnd(Transform actor)
    30.     {
    31.         StopAllCoroutines(); // Safeguard to stop coroutine just in case.
    32.     }
    33.  
    34.     IEnumerator HideContinueButtonWhileTyping()
    35.     {
    36.         // Wait 1 frame for dialogue UI to set up line:
    37.         yield return null;
    38.         // Hide the continue button:
    39.         dialogueUI.dialogue.npcSubtitle.HideContinueButton();
    40.         // Wait until the typewriter is done playing:
    41.         while (typewriter.IsPlaying)
    42.         {
    43.             yield return null;
    44.         }
    45.         // Finally, show the continue button:
    46.         yield return new WaitForSeconds(timeBeforeRelease);
    47.         dialogueUI.dialogue.npcSubtitle.ShowContinueButton();
    48.     }
    49. }
    50.  
    As for the OnBegin() and OnEnd() functions... they just don't seem to work with the SetActive function. Works for other things but not that for some reason.

    EDIT: Turns out the OnEnd() one actually works, but not the OnBegin() one. It's like something activates the continue button for the first frame but I don't what it could be and I didn't modify it with my own scripts or anything.
     
    Last edited: Feb 4, 2019
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @Sigma266 - Try changing the first "yield return null" to "yield return new WaitForEndOfFrame()":

    Code (csharp):
    1. IEnumerator HideContinueButtonWhileTyping()
    2. {
    3.     // Wait for end of frame because DS activates continue button immediately after OnConversationLine:
    4.     yield return new WaitForEndOfFrame();
    5.     ...
     
    Sigma266 likes this.
  40. Sigma266

    Sigma266

    Joined:
    Mar 25, 2017
    Posts:
    96
    Craaaap, I actually wanted to try this but I didn't. And guess what, it works! Thank you so much for being so patient with me!
     
  41. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    No problem. Sorry for providing a nonoptimal example in the first place. I'm glad it's working now.
     
    Sigma266 likes this.
  42. OlafsOsh

    OlafsOsh

    Joined:
    Jul 10, 2018
    Posts:
    31
    Hey!
    Couple slight offtopics here :]
    I will write my story in Articy. How well is it supported with Dialogue System?
    I had not chance to get familiar with all of the resources - do you help with dialogue set-up design as well?
    So you have a direct support as well? You probably do...
    Olafs
     
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @OlafsOsh - The Dialogue System fully supports articy. In fact, it supports articy versions 1.x, 2.x, and 3.x. (Nevigo's articy plugin, on the other hand, only supports articy 3.x. The Dialogue System doesn't require Nevigo's articy plugin.)

    I can provide some pointers when setting up dialogue and dialogue UIs. The online manual also has a list of tutorial videos.

    If you need help, please post here, or on the Pixel Crushers forum, or PM me, or email tony (at) pixelcrushers.com. Please post on a forum when possible. This way the answers can help other readers in the future.
     
  44. OlafsOsh

    OlafsOsh

    Joined:
    Jul 10, 2018
    Posts:
    31
    Sir, I am already happy with my purchase :] I'll start to put in material into articy in upcoming days, so do expect many noob questions. If you have some pointers right of the bat to paste here - it would be greatly appreciated. Or just send them to olafs_at_grunnd. Cheers!
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    The Dialogue System's articy importer takes full advantage of articy's templates feature. Start with the articy template project included in the Dialogue System's Templates folder, or set up your project's templates as described in the Dialogue System's articy importer documentation. This will set you up for the easiest import into the Dialogue System.

    Also, watch a few of the Dialogue System tutorials so you'll have a solid idea of what you'll be importing articy into on the Unity side. There are video and written tutorials so you can choose what fits your learning style. I recommend watching at least these: Quick Start, Conversation Conditions, and Interaction. If you have more time to spend, add Dialogue UI and Cutscene Sequences.
     
  46. MamaCatDev

    MamaCatDev

    Joined:
    Oct 8, 2012
    Posts:
    4
    Hey @TonyLi. Do you know of any reason the typewriter for subtitles might be running at a different speed during fullscreen that it does during windowed mode? This wouldn't be a huge problem but I'm using a speech synthesis method that takes a string and variable for letters per second. I trigger it with OnConversationLine. In windowed mode, the speech and subtitles sync up perfectly but in fullscreen the subtitles are faster and it's noticeable.

    My fix for this, at the moment, is to hook to OnConversationLineEnd and OnConversationResponseMenu to stop the speech if it is still playing. However this doesn't work if there's a sequence to ask the player for input. I tried hooking into OnSequenceEnd but it's not fired for the TextInput event. Is there a correct event hook I should be using?
     
  47. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @MamaCatDev - The typewriter effects don't have any connection to screen settings. They may, however, observe time settings. Are you setting Time.timeScale differently in windowed mode versus fullscreen?

    By default, the Dialogue System runs independently of Time.timeScale. This allows you to play conversations while gameplay is paused. If you're manipulating Time.timeScale and want the Dialogue System to follow along with the changes, inspect the Dialogue Manager and change Other Settings > Dialogue Time from Realtime to Gameplay.
     
  48. Frax228

    Frax228

    Joined:
    Jul 19, 2016
    Posts:
    40
    hi. can you add in "Focus Template Standard Dialogue UI" Text Input
     
  49. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    10,399
    Hi @Frax228 - It's there; it was just covered by the text panel. In the pending version 2.1.2, I moved it on top of the text panel so it's visible when subtitles are visible.
     
  50. Frax228

    Frax228

    Joined:
    Jul 19, 2016
    Posts:
    40
    Thanks. I find it. But i have small problem. Cant use mouse. Can you check it?
     
unityunity