Forum rules - please read before posting.

Custom conversation menu not displaying

Hi, I've got a setup where I have a normal conversation menu (appear type during conversation) but I'm trying to rig up a separate conversation menu that can be called on command. Think of this like Gabriel Knight where you have dialog options in-game and a separate conversation screen.

So I have a Unity UI menu called "Thought Cloud" with appear type Manual. There's a dialoglist element called "thoughtList" linked to several buttons. When the menu is turned on it runs an action list that starts a "thoughtCloudTopics" conversation with open in set element checked and the menu name and dialoglist element set correctly. But it brings up the generic Conversation menu and not the Thought Cloud menu.

Right now my hacky way of fixing this is to set the menu as "During Conversation" but even with open in set element I get both conversation menus so I have to constantly lock and unlock the menus. The manual suggests "Alternatively, it can be set to display in a specific Menu." but no other "appear type" seems to allow running any DialogList element except "during conversations." I'm fine with the hacky approach but is there a more efficient solution?

Comments

  • If the Action checked Open in set element? checked, then the supplied Menu should turn - provided its Appear type is set to Manual.

    However, any Menu that has an Appear type set to During Conversation will also turn on at this time. You'll need to lock your regular Conversation menu beforehand to prevent both from showing.

    Since you need to do this, however, it may be easier to unlock Thought Cloud at the same time - and have it appear During Conversation as well - so that only one is unlocked at a time.

    These lock/unlock commands could be moved to a separate ActionList to avoid having to recreate them each time you run a "thought" Conversation. Calling this ActionList could either be done manually, or automatically via a custom script that e.g. locks/unlocks Menus based on the Conversation's "Tag":

    using UnityEngine;
    using AC;
    
    public class DynamicConversationMenu : MonoBehaviour
    {
    
        public string tag = "ThoughtConversation";
    
        void OnEnable () { EventManager.OnStartConversation += OnStartConversation; }
        void OnDisable () { EventManager.OnStartConversation -= OnStartConversation; }
    
        void OnStartConversation (Conversation conversation)
        {
            bool isThoughtConversation = conversation.gameObject.CompareTag (tag);
            PlayerMenus.GetMenuWithName ("Conversation").isLocked = isThoughtConversation;
            PlayerMenus.GetMenuWithName ("Thought Cloud").isLocked = !isThoughtConversation;
        }
    
    }
    

    If you haven't seen it already, it's also worth mentioning that a UI template that emulates Gabriel Knight's conversation system can be found on the Downloads page.

  • Thank you, Chris! I also didn't have "clickable in cutscenes" checked causing the actionlist that brings up the conversation to block the menu but that is a helpful script.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.