Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    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. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Heart Is Muscle - Just Released On Itch.io

    Check out Heart is Muscle, a quirky visual novel/RPG hybrid made by a solo developer with the Dialogue System for Unity.

    upload_2021-5-1_12-18-25.png
     
  2. Irishall

    Irishall

    Joined:
    Dec 9, 2016
    Posts:
    16
    upload_2021-5-2_15-10-41.png

    Can the Response menu be displayed automatically?

    In this situation, I hope Response 1,2,3 will be automatically displayed when Typewriter of 'Dialogue 1' is finished.
    If possible, I hope it will be common to all conversations.

    (Edit) I found this Sequence: Continue()@Message(Typed)
    However, it still needs to be inserted into Dialogue before all Response.
     
    Last edited: May 2, 2021
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Irishall - Inspect the Dialogue Manager GameObject, and set Display Settings > Subtitle Settings > Continue Button to Not Before Response Menu. Or set it to Never if you never want to require the continue button for any lines.
     
  4. Irishall

    Irishall

    Joined:
    Dec 9, 2016
    Posts:
    16
    It is a simple solution! Thank you.
     
    TonyLi likes this.
  5. Gamingbir

    Gamingbir

    Joined:
    Apr 1, 2014
    Posts:
    194
    Hi,

    I just started using this gem. I want to do a very simple thing.I have this 2D game scene.
    test.png

    All I want to do is when I reach my NPC (the guy with beard) trigger a collider to see the interact button(Example E to interact)Then I just play a dialogue. Sorry for the newbie question. Just want to know how to do that.

    I am trying to recreate this game. I really like the way it handles its dialogues and quests

     
    Last edited: May 3, 2021
  6. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Gamingbir - Thanks for using the Dialogue System!
    1. In the Dialogue System's Welcome Window, make sure you've ticked the USE_PHYSICS2D checkbox.
    2. Add these components to the NPC: 2D collider, Rigidbody2D, Usable component, Dialogue System Trigger.
      • Regular 2D collider (not trigger).
      • Rigidbody2D can be Kinematic.
      • On Dialogue System Trigger, select Add Action > Start Conversation. Select your conversation.
    3. Add these components to the player: 2D trigger collider, Proximity Selector, Selector Use Standard UI Elements.
      • Tick collider's Is Trigger checkbox. Make it bigger than the player so it can intersect the NPC.
      • The player can also have a regular (non-trigger) collider.
      • Change the Proximity Selector's Use Key to "E" and Use Message to "E to interact".
    More info:
     
    Gamingbir likes this.
  7. Gamingbir

    Gamingbir

    Joined:
    Apr 1, 2014
    Posts:
    194
    @TonyLi Thanks that worked. Sorry to bother you again with another newbie question ...

    How do I add that Button to go next and a button to close the dialogues? Also how to make the dialogue panel appear as seen in the image? Do I make the UI element added to each NPC the player talk to?

    test 2.png
     
    Last edited: May 3, 2021
  8. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Gamingbir - Please see: How To: Set Up Overhead Conversation Bubble Text. It has a link to an example scene. Briefly:
    1. Inspect the Dialogue Manager GameObject, and set Display Settings > Subtitle Settings > Continue Button to Always.
    2. Duplicate the prefab "Bubble Template Standard UI Subtitle Panel". (Make a duplicate so you can customize its appearance without losing changes if you update the Dialogue System.)
    3. Add a Dialogue Actor component to your NPC. Set Dialogue UI Settings > Subtitle Panel Number to Custom, and assign your prefab to the Custom Panel field. Also set the Actor dropdown.
    The prefab doesn't have a continue (Next) button, but the version in the example scene does. You can take a look at how it's set up.

    The prefab also doesn't use the typewriter effect, but you can add it by adding a UnityUITypewriterEffect component to the Text GameObject. Or, if you want to switch to TextMesh Pro for crisper text, add a TextMeshProTypewriterEffect. If you're using TextMesh Pro, the Dialogue System also supports an addon called Text Animator (integration page) that can do nice animated effects.

    The prefab also doesn't have a Close button, but you can add one. Then add this script to it:
    Code (csharp):
    1. using UnityEngine;
    2. using PixelCrushers.DialogueSystem;
    3. [RequireComponent(typeof(UnityEngine.UI.Button))]
    4. public class StopConversationButton : MonoBehaviour
    5. {
    6.     void Start()
    7.     {
    8.         GetComponent<UnityEngine.UI.Button>().onClick.AddListener(() => { DialogueManager.StopConversation(); });
    9.     }
    10. }

    To connect the Next and Close UI Buttons to gamepad input, add UI Button Key Trigger components to them. If you're using Unity's built-in input manager, you can set the Next button's Key dropdown to Joystick Button 0 and Close button to Joystick Button 1.
     
    Gamingbir likes this.
  9. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Hey Tony!
    All out of nowhere I am having an issue, and I am not sure what is causing it.. Dialogue works just fine in the editor player, but after building, I am getting these errors, causing the dialogue to either not show up or not work at all.

    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.DoConversationAction (UnityEngine.Transform actor) [0x00116] in <5aefc61464594413b73a98ff82eb297c>:0
    3.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.Fire (UnityEngine.Transform actor) [0x00054] in <5aefc61464594413b73a98ff82eb297c>:0
    4.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.TryStart (UnityEngine.Transform actor, UnityEngine.Transform interactor) [0x00026] in <5aefc61464594413b73a98ff82eb297c>:0
    5.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.TryStart (UnityEngine.Transform actor) [0x00000] in <5aefc61464594413b73a98ff82eb297c>:0
    6.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.OnTriggerEnter (UnityEngine.Collider other) [0x00018] in <5aefc61464594413b73a98ff82eb297c>:0
    I didn't have this before and I haven't really changed much in regards to the dialogue manager or anything, so I am fairly clueless as what may have started causing it.
    I understand it's missing a reference, but I don't know to what.
     
  10. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @SOSolacex - What version of the Dialogue System are you using? (You can check it in the Welcome Window or Plugins / Pixel Crushers / Dialogue System / _README.txt.) If you're not on version 2.2.16+, can you back up your project and update to the latest?

    If that doesn't help, have you assigned a delegate function to DialogueManager.isDialogueEntryValid? If so, is it possible that your function is running into an error?
     
  11. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    I am on 2.2.16. I haven't done anything with IsDialogueEntryValid... However, could it be that it is tied to the save system for Opsive thing? As far as I know, that's the most recent thing I have been trying to set up.
     
  12. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Can you make a Development Build and reproduce the issue?

    Also feel free to send a reproduction project to tony (at) pixelcrushers.com with the steps needed to reproduce the issue.
     
  13. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    The same thing happens in a development build. There's more going on however. The opsive screen also doesn't work. For example, I can interact with doors and everything just fine, however, the message "press f to interact" doesn't show up.

    I assume this is the offender. "The referenced script (Opsive.UltimateCharacterController.StateSystem.StateInspectorHelper) on this Behaviour is missing!" not sure where or why this would be missing.. but here we are. :confused:

    Edit: More issues tied to Opsive
    Edit2: Ah, I used something I shouldn't have, didn't I?
    "If your project uses the Dialogue System for Unity or Quest Machine, you don't need this asset. They already include Opsive character controller support."

    I bought that saving system asset like back in nov 2020.. which was a while ago. I probably imported it and forgot I didn't need it if I had the other assets. Now it's probably messing things up.

    Edit 3: Yep! Removed the save system prefab from my main menu and it started working again, cheers.


    Code (CSharp):
    1. A scripted object (probably Opsive.UltimateCharacterController.StateSystem.StateInspectorHelper?) has a different serialization layout when loading. (Read 32 bytes but expected 44 bytes)
    2. Did you #ifdef UNITY_EDITOR a section of your serialized properties in any of your scripts?
    3.  
    4. NullReferenceException: Object reference not set to an instance of an object
    5.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.DoConversationAction (UnityEngine.Transform actor) [0x00116] in <5aefc61464594413b73a98ff82eb297c>:0
    6.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.Fire (UnityEngine.Transform actor) [0x00054] in <5aefc61464594413b73a98ff82eb297c>:0
    7.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.TryStart (UnityEngine.Transform actor, UnityEngine.Transform interactor) [0x00026] in <5aefc61464594413b73a98ff82eb297c>:0
    8.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.TryStart (UnityEngine.Transform actor) [0x00000] in <5aefc61464594413b73a98ff82eb297c>:0
    9.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.OnTriggerEnter (UnityEngine.Collider other) [0x00018] in <5aefc61464594413b73a98ff82eb297c>:0
    10.  
    11. NullReferenceException: Object reference not set to an instance of an object
    12.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.DoConversationAction (UnityEngine.Transform actor) [0x00116] in <5aefc61464594413b73a98ff82eb297c>:0
    13.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.Fire (UnityEngine.Transform actor) [0x00054] in <5aefc61464594413b73a98ff82eb297c>:0
    14.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.TryStart (UnityEngine.Transform actor, UnityEngine.Transform interactor) [0x00026] in <5aefc61464594413b73a98ff82eb297c>:0
    15.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.TryStart (UnityEngine.Transform actor) [0x00000] in <5aefc61464594413b73a98ff82eb297c>:0
    16.   at PixelCrushers.DialogueSystem.DialogueSystemTrigger.OnUse (UnityEngine.Transform actor) [0x00012] in <5aefc61464594413b73a98ff82eb297c>:0
    17.   at PixelCrushers.DialogueSystem.OpsiveUCCSupport.DialogueSystemTriggerInteractableTarget.Interact (UnityEngine.GameObject character) [0x00010] in <f500caa38c8847948d8f4f2291e82aca>:0
    18.   at Opsive.UltimateCharacterController.Traits.Interactable.Interact (UnityEngine.GameObject character) [0x00004] in <7353dd5a903943e6b2a5debdf612a752>:0
    19.   at Opsive.UltimateCharacterController.Character.Abilities.Interact.DoInteract () [0x00011] in <7353dd5a903943e6b2a5debdf612a752>:0
    20.   at Opsive.Shared.Game.ScheduledEvent.Invoke () [0x00000] in <058e839101a04a31a2a60698ff49517e>:0
    21.   at Opsive.Shared.Game.SchedulerBase.Invoke (Opsive.Shared.Game.ScheduledEventBase scheduledEvent, System.Int32 index) [0x0001d] in <058e839101a04a31a2a60698ff49517e>:0
    22.   at Opsive.Shared.Game.SchedulerBase.FixedUpdate () [0x0002c] in <058e839101a04a31a2a60698ff49517e>:0
    23.  
     
    Last edited: May 3, 2021
  14. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    The main reason why I started messing with that save system is because I am confused as to why my save system isn't working in the first place. I followed the entire documentation and tied the dialogue system with the FPC controller and the UIS save stuff.. but all it does is load the inventory upon loading. It doesn't load the dialogue system variables, the character position, item active/not active states etc.

    Everything SHOULD be set up correctly.. I think

    https://prnt.sc/12fjdb5
    https://prnt.sc/12fjeq4
    https://prnt.sc/12fjfbs
     
    Last edited: May 3, 2021
  15. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    @SOSolacex - Sorry about the unnecessary purchase. Unfortunately Unity doesn't permit refunds after 6 months. But if there's a Pixel Crushers UMA asset that you'd like, PM me and I can send you a voucher.

    Often, when things work in the editor but not in a build, it's because the build plays from scene index 0. The Dialogue Manager GameObject and Save System GameObject (if they're separate GameObjects) are persistent singletons; they survive scene changes and replace any versions that were in the new scene. In addition, if you use any Save System functionality and the scene doesn't have a Save System GameObject, it will create a default one so that it can continue to function. However, since it's a persistent singleton, this default one will survive scene changes.

    Check your scenes from index 0. Identify the first Dialogue Manager and Save System, and make sure they're configured correctly.
     
  16. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    No worries, you can keep it. I ask you for support plenty of times and you've answered every time. That combined with the fact that it's my own fault for not reading correctly.. ;) (Also I don't use UMA so.. :p)

    Also, could you perhaps guide me towards the very beginning of setting up a save system between Opsive FPC, UIS and Dialogue System?

    I have followed everything here http://www.pixelcrushers.com/dialogue_system/manual2x/html/uis.html with no luck; Only saving the inventory works, saving the location of the player, variables, active/inactives etc does not work. I've even followed the documentation of the saving system for opsive pdf, without any luck either.. so I feel like I am missing something.
     
  17. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @SOSolacex - If only the inventory is being saved, it sounds like maybe UIS's save system is doing the save instead of the Dialogue System's save system. How are you initiating saves and loads?
     
  18. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    I use the save/load menu that comes with UIS, however I followed the documentation where Dialogue manager should handle the saves with these steps


    To tie UIS into the Pixel Crushers Save System:

    [SIZE=5][B]Setup[/B][/SIZE]

    [*]On the UIS Game GameObject:

    [*]Remove the [B]Save System Manager[/B] component and add the integration's [B]Save System Manager No Disk[/B] component in its place.

    [*]On your player inventory GameObject, untick the [B]Inventory Saver[/B] component's Load On Start. Make sure the player GameObject has the exact same name in all scenes, as the Inventory Saver's unique expanded key value is partially based on the GameObject name. If you specify a Key value, make sure it's the same value on all instances of the player in all scenes.
    [*]Add a Dialogue Manager GameObject by adding the prefab in Plugins ► Pixel Crushers ► Dialogue System ► Prefabs.

    [*]Add a [B]UIS Lua[/B] component.

    [*]Set up the Dialogue System's [URL='http://www.pixelcrushers.com/dialogue_system/manual2x/html/save_system.html']Save System[/URL]. Then add a [B]UIS Saver[/B] component. If you want to use an AutoSaveLoad component, see [URL='http://www.pixelcrushers.com/dialogue_system/manual2x/html/uis.html#uisSetupAutoSaveLoad']Auto Save Load Note[/URL].

    [*]Alternative: If you want to use UIS's save system as the primary save system, do not add a [B]UIS Saver[/B] component. Instead, add a [B]Pixel Crushers To UIS Saver[/B] component.

    [*]Optional (for testing only): If you want to connect to the Pixel Crushers Save System's test menu script, add a [B]Redirect Save Load Button To Test Menu[/B] component to the UIS Inventory System Canvas > Main Menu > Save/Load button GameObject. Then assign the UIS Save Menu GameObject to it. Note: This script is not intended for release builds. Use it only for quick testing.


    [*]Set up the Dialogue System's [URL='http://www.pixelcrushers.com/dialogue_system/manual2x/html/save_system.html']Save System[/URL].
    [*]Add a UIS Saver component to the same GameObject as the Pixel Crushers Save System component.
    [*]On the Game GameObject, replace the Save System Manager component with a Save System Manager No Disk component.
    [*]Untick the Inventory System Manager's Dont Destroy On Load Checkbox. This will prevent it from creating a duplicate when loading new scenes.



    As far as I know I still have to set UIS up with the static methods PixelCrushers.SaveSystem.SaveGameToSlot and PixelCrushers.SaveSystem.LoadGameFromSlot, just can't really find out where to do that on the inventory canvas.
     
    Last edited: May 3, 2021
  19. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    @SOSolacex - If the save menu looks like this, you're using the UIS save system:

    upload_2021-5-3_17-22-23.png

    If it looks ugly like this, you're using the Dialogue System's test save menu:

    upload_2021-5-3_17-23-25.png

    The test menu is provided as a convenience for testing, but ultimately you'll want to use PixelCrushers.SaveSystem.SaveToSlot, or add a SaveSystemMethods component to a UI Button and hook up OnClick() to SaveSystemMethods.SaveToSlot, or use the free menu framework available on the Dialogue System Extras page.
     
  20. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    I am definitely using the UIS save system then, but wouldnt it be possible to setup the methods with UIS's UI? I've been looking to try and find the logic / script behind saving in UIS so I could mess around and try and replace the methods it uses when you click the save / confirm button there, but it's like finding a needle in a haystack for me. hahah
     
  21. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Yes, you can do that. I recommend asking the UIS dev how to hook up buttons in his UI system. He's very responsive in the Opsive discord. He'll be able to give you a better answer than me; I still always have to dig around a bit in his code to remember how it works.
     
  22. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Haha, very relatable. Will do, thank you very much.
     
  23. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    If you get totally stuck, let me know. But Santiago should be able to help you get the UI button hooked up pretty quick.
     
    SOSolacex likes this.
  24. BuzzBean

    BuzzBean

    Joined:
    Apr 15, 2021
    Posts:
    5
    VR Interaction Framework This Asset and conversation Asset conflict do not work
     
  25. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @BuzzBean - VR Interaction Framework and the Dialogue System work fine together. What issue are you seeing?

    Remember that, in VR, Unity does not render Screen Space - Overlay canvases. If you're using Unity UI, make sure to use World Space or Screen Space - Camera canvases.
     
  26. nichjaim

    nichjaim

    Joined:
    Apr 23, 2020
    Posts:
    46
    I need to be able to chain together certain dialogue conversations at runtime. After a certain dialogue ends I need to immediately figure out what dialogue should be next and start that one. To figure out when a dialogue ends I use the OnClose action on the dialogue panel, but some problems seem to arise when I use this as my means for knowing when I can start another dialogue (though might just be a problem with my code). My questions are: Is there an in-built way to do what I'm trying to do (chain together dialogue conversations where the chain is decided at runtime) or if not, then what is the best way to determine when a dialogue has completely finished and it's safe to immediately start another one. Sorry for long text.
     
    Last edited: May 5, 2021
  27. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @nichjaim - Here are three ways to know when a conversation ends:
    Note: You can link from one conversation to another. If this would work for your design, then you don't have to end the first conversation. Simply link the last node of the first conversation to another conversation. To link one conversation to another, inspect a node. From the "Links To:" dropdown, select "(Another Conversation)".
     
    nichjaim likes this.
  28. ClaudiaTheDev

    ClaudiaTheDev

    Joined:
    Jan 28, 2018
    Posts:
    331
    It's probably easy to do, but i just can't find it or am dumb.

    upload_2021-5-6_10-12-4.png

    Question: How can i skip a node in the dialog, so it doesnt show as dialog and also do not need a continue input?
    Currently the dialog is not shown for the grey node but somehow i need to press continue on the grey node until it's shows the blue ones. This results in having to press 2 times continue (for green before and grey) until blue shows.

    Use Case:

    Most of my many dialogs have this pattern. When you start the NPC(green) says something different, depending on conditions (like different greetings or progress in story or stuff). In the pic you see 3 but actually it's more like 20.

    Then a player choice (blue) is shown, how the player wants to interact with the NPC.

    So i created a empty node (grey) between the greetings and player choice to manage the connection between the green node and blue. Else i would need to connect all green nodes with all blue and this was very confusing and redundant.
     
  29. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @ClaudiaTheDev - The answer your specific question: Set the node's Sequence field to: Continue()

    However, the better way is to tick the node's Group checkbox. Group nodes pass through immediately. They are designed exactly for your use case. You can put optional Conditions on group nodes, too.
     
  30. ClaudiaTheDev

    ClaudiaTheDev

    Joined:
    Jan 28, 2018
    Posts:
    331
    It works now perfect with the group option! Thank you for the fast help!
     
    TonyLi likes this.
  31. Irishall

    Irishall

    Joined:
    Dec 9, 2016
    Posts:
    16
    Can I still display Subtitle Text after the conversation?
    I'm making a text-based game. (while the conversation is end or paused) I want the merchant's conversation to still be displayed when the store UI is enabled.
     
  32. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Irishall - Yes. You can either leave the conversation active or leave the dialogue UI open. To leave the conversation active, on the last node (the one that opens the store UI), set the Sequence field to:

    WaitForMessage(DoneShopping)

    When your store UI closes, call this C# method:

    PixelCrushers.DialogueSystem.Sequencer.Message("DoneShopping");
     
  33. Irishall

    Irishall

    Joined:
    Dec 9, 2016
    Posts:
    16
    upload_2021-5-8_2-47-31.png

    upload_2021-5-8_2-47-57.png

    Thank you for your reply. I have one more question.

    I started using Textline UI Addon. I played 'Main Conversation' first, but I can't do anything. Nothing happens when I click Response Button. Also, it seems that Continue Button is not available. Is there anything else I need to set up? Or is this just an old Addon?
     
  34. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Irishall - It's not old. It's current. If you can't click the response buttons, make sure your scene has an EventSystem, no other UIs are blocking the response panel, and the Dialogue Manager's Canvas has a Graphic Raycaster. Also make sure the example scenes work. (Add them to build settings, then play the start scene.)

    If you only need an SMS style UI, use the SMS Dialogue UI included in the Dialogue System instead.
     
  35. Irishall

    Irishall

    Joined:
    Dec 9, 2016
    Posts:
    16
    Great! I decided to use SMS Dialogue UI instead of Textline.

    But I have a new problem. There are more than three Actors in my conversation, and they are each using a different Subtitle Panel.

    C01.jpg

    C02.jpg

    C03.jpg

    I created a new Actor GameObject and Subtitle Panel and linked it to Component.
    And then I started a conversation : DialogueManager.StartConversation(conversationName);
    However, when the conversation is played, NPC Subttile is being output instead of Narration Subtitle.

    When I used the VN Style Dialogue UI, the Narration Subtitle Panel was output without any problems. Can SMS Dialogue UI have only 2 Actors?
     
  36. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Irishall - The SMS Dialogue UI can have as many actors as you want, but they need to use panels 0 & 1 (the right and left bubbles in an SMS interface).
     
  37. BuzzBean

    BuzzBean

    Joined:
    Apr 15, 2021
    Posts:
    5
  38. BuzzBean

    BuzzBean

    Joined:
    Apr 15, 2021
    Posts:
    5
    This is a problem with the application of two sets Asset(Oculus) dh1.PNG dh2.PNG dh3.PNG
     
  39. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @BuzzBean - You have switched your project to the new Input System. Perhaps this was accidental? If you really intend to use Unity's built-in input manager, open Unity's Package Manager window and remove the Input System package.

    If you intend to use the new Input System package, first make sure VRIF and the Oculus integration support the new Input System. (The last time I checked, the Oculus integration at least did not support it.)

    The Dialogue System does support the new Input System. Tick the Dialogue System Welcome Window's USE_NEW_INPUT checkbox, and see the setup steps on page 5 of Plugins / Pixel Crushers / Common / Documentation / Input_Device_Manager_Manual.pdf.
     
    BuzzBean likes this.
  40. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    The Dialogue System works with the built-in input system by default, or with the new Input System package, or Rewired, etc.

    This issue is unrelated to the Dialogue System.

    Select menu item Window > Package Manager. Change the Packages dropdown to In Project. Remove the Input System package.
     
    BuzzBean likes this.
  41. BuzzBean

    BuzzBean

    Joined:
    Apr 15, 2021
    Posts:
    5
    upload_2021-5-12_12-51-54.png
    I want to change the scene according to my choice. What should I do?
     
  42. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Use the LoadLevel() sequencer command in the response node's Sequence field. Read Changing Scenes on the Save System page first.
     
    BuzzBean likes this.
  43. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Let's Play! April Made With Unity x Spring Sale Showcase Stream

    Yesterday, the Unity Play team played a selection of games submitted to the April Made With Unity x Spring Sale Showcase, including a couple of Dialogue System-powered games. You can check out the stream here:

    https://www.twitch.tv/videos/1020113639

    The fun helicopter rescue game Rescue One didn't make it into the stream, but it's definitely worth checking out for a short, free fun play.
     
  44. Kwahusss

    Kwahusss

    Joined:
    Sep 21, 2015
    Posts:
    13
    Hi. I try to add Conversation choosing field (like we have for the Dialogue System Trigger component) for my custom ScriptableObject.

    upload_2021-5-14_15-9-48.png

    However, after the recompiling or restarting Unity project, when I click on this Scriptable Object, I get an error

    upload_2021-5-14_15-13-20.png

    My code
    Code (CSharp):
    1. [field: SerializeField, Tooltip("Sequence of dialogs")]
    2. [field: ConversationPopup(true)]
    3. private string[] DialogNames { get; set; }
    4.  
     
  45. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @Kwahusss - The [ConversationPopup] attribute applies to individual string variables, not string array properties. As a test, try:
    Code (csharp):
    1. [SerializeField]
    2. [ConversationPopup(true)]
    3. private string DialogName;
    If it still reports an error, please contact Sirenix since the error is in Odin.

    If it works, you can make an array of objects that contain string variables, something like:
    Code (csharp):
    1. [Serializable]
    2. public class DialogInfo
    3. {
    4.     [SerializeField]
    5.     [ConversationPopup(true)]
    6.     private string DialogName;
    7. }
    8.  
    9. [SerializeField]
    10. private DialogInfo[] DialogInfo;
     
    Kwahusss likes this.
  46. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Black Book Wins DevGAMM's Excellence In Narrative Award

    Congratulations to Morteshka for winning the Excellence in Narrative Award at this year's DevGAMM. Black Book is made with the Dialogue System for Unity.



    ---

    Voting Open for Suzerain in Unfold Games Awards

    Suzerain, made with the Dialogue System for Unity, is nominated for two categories -- Best Narrative and Audience Award -- in the Unfold Games Awards. If you liked playing this tense political visual novel, consider giving it your vote.

     
  47. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Hey Tony,
    A bit of a noob question but could you help me setting up Assembly definitions for Pixelcrushers?
    I need to access the pixelcrusher's code while in the SaveMenu.cs / SaveGrid.cs from UIS to try and hook up the buttons. However, to do so I need a reference to outside code aka Pixelcrusher's SaveSystem.

    I am no expert scripter and thus know a basic amount about assemblies, I've tried to set them up in the plugins and assets folders for the dialogue system so I could reference them in the UIS assembly, however not without getting 100's of errors, meaning I am definitely doing something wrong. :oops:

    Could you point me in the right direction in how to go about it?

    Edit: Oh, I didn't see your comment in the discord. My bad!
     
    Last edited: May 18, 2021
  48. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    To recap here: Pixel Crushers assets import by default without assembly definition files (asmdefs). But they do include asmdef packages. If you're using the Dialogue System and you'd like to use asmdefs, import Plugins / Pixel Crushers / Dialogue System / Scripts / DialogueSystemAssemblyDefinitions.unitypackage. Then you can add the PixelCrushers and DialogueSystem asmdefs to the Opsive.UltimateInventorySystem asmdef's Assembly Definition References section -- or, better yet, make subclasses or duplicate the classes (as the UIS dev suggests) in your own asmdef, and reference them there.
     
  49. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121

    Hey, thanks for the reply.
    And sorry for the trouble, but upon unpacking the assemblies, I seem to be getting this error. http://prntscr.com/132grm8
     
  50. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Hi @SOSolacex - Can you back up your project, delete the Plugins/Pixel Crushers/Dialogue System folder, and reimport the Dialogue System? That file moved in version 2.2.14 last November.