triggering a Bark with an ID

Announcements, support questions, and discussion for the Dialogue System.
SindriaGames
Posts: 10
Joined: Sun Apr 06, 2025 1:17 pm

triggering a Bark with an ID

Post by SindriaGames »

Hi,

Im trying to trigger a bark via in ID.
here is how im doing it:

Code: Select all

                if (entryID > -1)
                {
                    Debug.Log("BarkFromConversationTask: playing bark with ID: " + entryID + groupTitle);
                    
                    barkMember.GroupBark(conversationTitle, speaker, entryID); //this gives 2 warnings and a null reference error DONT WORK

                    //also tryed with dialogueManager.bark (not at the same time as groupBark

                    Debug.Log("dialogueActor has barkUI? " + speaker.GetComponent<DialogueActor>().barkUISettings.barkUI.gameObject.name); //this logs the barkUI correclty and its enabled.
                    DialogueManager.Bark(conversationTitle, speaker, null, entryID); //this gives 2 warnings and a null reference error DONT WORK
                }
                else
                {
                    Debug.Log("BarkFromConversationTask: played Bark with conversation tittle: " + conversationTitle + groupTitle);

                    barkMember.GroupBark(conversationTitle, speaker, barkHistory);  //this works perfectly fine.

                }

Im getting warning and error if i try to use directly a dialogue ID, but when i dont using the same trasnform from the speaker with barkmember.groupbark() all works fine..

speaker has dialogueActor with a referene to a standardBarkUI that is enabled in hierachy.

what im doing wrong?

please help!
Thanks!
Attachments
warnings and errors.png
warnings and errors.png (385.47 KiB) Viewed 2185 times
dialogueactor has ui.png
dialogueactor has ui.png (426.51 KiB) Viewed 2185 times
dialogues.png
dialogues.png (159.71 KiB) Viewed 2185 times
User avatar
Tony Li
Posts: 23250
Joined: Thu Jul 18, 2013 1:27 pm

Re: triggering a Bark with an ID

Post by Tony Li »

Hi,

In barkMember.GroupBark(), try setting your "speaker" to barkMember.transform. The issue is that it's not finding a bark UI on the speaker, either in its hierarchy or via its Dialogue Actor component.
SindriaGames
Posts: 10
Joined: Sun Apr 06, 2025 1:17 pm

Re: triggering a Bark with an ID

Post by SindriaGames »

Hi.

Thanks for your response!

My "speaker" transform contains both the BarkMember Component and the DialogueActor component (see attatchment).

The DialogueActor has a reference of the BarkUI but the BarkUI is not inside of the hierachy of this GameObject transform, its somewhere else.

So what i found out is that while using barkMember.GroupBark(conversationTitle, speaker, entryID); if the BarkUI is inside the transform of the game object that holds the BarkMemeber and the DialogueActor (the "speaker"), it works fine. But if the UI is not inside the hierachy it doesnt (even if the DialogueActor has a reference of the BarkUI and the BarkUI is enabled),

Meanwhile using barkMember.GroupBark(conversationTitle, speaker, barkHistory); it works even if the BarkUI is not whithin the actors hierachy.

Ideally i want to have a shared UI for all bark members instead each NPC having a canvas and the Bark UI inside their GameObject. Is that possible?
Attachments
inspector.png
inspector.png (80.7 KiB) Viewed 2180 times
User avatar
Tony Li
Posts: 23250
Joined: Thu Jul 18, 2013 1:27 pm

Re: triggering a Bark with an ID

Post by Tony Li »

Hi,

That should work. Note that the second parameter to BarkGroupMember.GroupBark() is the listener, not the speaker. The speaker is assumed to be the barkMember itself.

Temporarily set the Dialogue Manager's Other Settings > Debug Level to Info. Then reproduce the issue and look for a line in the Console like:

Dialogue System: Bark (speaker=Dialogues Actor NPC Pierre, listener=...):'text'

If you see any warnings instead, please let me know what the warnings are.
SindriaGames
Posts: 10
Joined: Sun Apr 06, 2025 1:17 pm

Re: triggering a Bark with an ID

Post by SindriaGames »

This is the error I get if i put the debug level to info:

Code: Select all

NullReferenceException: Object reference not set to an instance of an object
PixelCrushers.DialogueSystem.DialogueSystemController.Bark (System.String conversationTitle, UnityEngine.Transform speaker, UnityEngine.Transform listener, System.Int32 entryID) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/Manager/DialogueSystemController.cs:1743)
PixelCrushers.DialogueSystem.DialogueManager.Bark (System.String conversationTitle, UnityEngine.Transform speaker, UnityEngine.Transform listener, System.Int32 entryID) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/Manager/DialogueManager.cs:689)
PixelCrushers.DialogueSystem.BarkGroupManager.GroupBark (System.String conversation, PixelCrushers.DialogueSystem.BarkGroupMember member, UnityEngine.Transform listener, System.Int32 entryID, System.Single delayTime) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/Bark/BarkGroupManager.cs:202)
PixelCrushers.DialogueSystem.BarkGroupMember.GroupBark (System.String conversation, UnityEngine.Transform listener, System.Int32 entryID, System.Single delayTime) (at Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/MVC/View/Bark/BarkGroupMember.cs:100)
SindriaWorld.TheVineyard.AI.Tasks.BarkFromConversationTask.OnUpdate () (at Assets/#The_Vineyard/Scripts/AI/Tasks/BarkFromDialogueDatabaseTask.cs:64)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:117)
RenownedGames.AITree.Nodes.ParallelNode.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/DevidedModules/Nodes/Composites/ParallelNode.cs:60)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:117)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.Nodes.SequencerNode.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/DevidedModules/Nodes/Composites/SequencerNode.cs:41)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:117)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.AuxiliaryNode.UpdateChild () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:52)
RenownedGames.AITree.Nodes.OneTimeExecutionDecorator.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/DevidedModules/Nodes/Decorators/OneTimeExecutionDecorator.cs:54)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.AuxiliaryNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:38)
RenownedGames.AITree.AuxiliaryNode.UpdateChild () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:52)
RenownedGames.AITree.ObserverDecorator.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/ObserverDecorator.cs:64)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.AuxiliaryNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:38)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:91)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.Nodes.SelectorNode.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/DevidedModules/Nodes/Composites/SelectorNode.cs:40)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:117)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.AuxiliaryNode.UpdateChild () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:52)
RenownedGames.AITree.ObserverDecorator.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/ObserverDecorator.cs:64)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.AuxiliaryNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:38)
RenownedGames.AITree.AuxiliaryNode.UpdateChild () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:52)
RenownedGames.AITree.ObserverDecorator.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/ObserverDecorator.cs:64)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.AuxiliaryNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/AuxiliaryNode.cs:38)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:91)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.Nodes.SelectorNode.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/DevidedModules/Nodes/Composites/SelectorNode.cs:40)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:117)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.Nodes.SequencerNode.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/DevidedModules/Nodes/Composites/SequencerNode.cs:41)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.WrapNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/WrapNode.cs:117)
RenownedGames.AITree.CompositeNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/CompositeNode.cs:57)
RenownedGames.AITree.RootNode.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/RootNode.cs:48)
RenownedGames.AITree.Node.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/Node.cs:214)
RenownedGames.AITree.RootNode.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Nodes/Classes/RootNode.cs:40)
RenownedGames.AITree.BehaviourTree.OnUpdate () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/Tree/Classes/BehaviourTree.cs:351)
RenownedGames.AITree.BehaviourRunner.Update () (at Assets/ProBuilder Data/RenownedGames/AITree/Core/Runtime/CoreModules/BehaviourRunner/Classes/BehaviourRunner.cs:65)

It points to this method

Code: Select all

        public void Bark(string conversationTitle, Transform speaker, Transform listener, int entryID)
        {
            CheckDebugLevel();
            if (speaker == null)
            {
                if (DialogueDebug.logWarnings) Debug.LogWarning($"Dialogue System: Can't bark '{conversationTitle}:[{entryID}]. No barker specified.");
                return;
            }
            var barkUI = speaker.GetComponentInChildren(typeof(IBarkUI)) as IBarkUI;
            ConversationModel conversationModel = new ConversationModel(DialogueManager.masterDatabase, conversationTitle, speaker, listener, DialogueManager.allowLuaExceptions, DialogueManager.isDialogueEntryValid, entryID, 
                stopEvaluationAtFirstValid, useLinearGroupMode);
            var state = conversationModel.firstState;
            StartCoroutine(BarkController.Bark(state.subtitle, speaker, listener, barkUI));
        }
Im attaching a screenshot of a conversation with chatGPT trying to figure out what im doing wrong, maybe can be helpful.
chatGPT.png
chatGPT.png (79.73 KiB) Viewed 2174 times
User avatar
Tony Li
Posts: 23250
Joined: Thu Jul 18, 2013 1:27 pm

Re: triggering a Bark with an ID

Post by Tony Li »

Hi,

Does your scene have a Dialogue Manager GameObject?

What Dialogue System version are you using?
SindriaGames
Posts: 10
Joined: Sun Apr 06, 2025 1:17 pm

Re: triggering a Bark with an ID

Post by SindriaGames »

Yes my scene has the Dialogue manager prefab and the version is: v.2.2.47
User avatar
Tony Li
Posts: 23250
Joined: Thu Jul 18, 2013 1:27 pm

Re: triggering a Bark with an ID

Post by Tony Li »

Can you back up your project, update to DS 2.2.51, and see if the issue persists?

If it does, I may need you to send a reproduction project to tony (at) pixelcrushers.com
SindriaGames
Posts: 10
Joined: Sun Apr 06, 2025 1:17 pm

Re: triggering a Bark with an ID

Post by SindriaGames »

Hi,

I have updated the plugin to the latest version and the issue persist.

I have created this project to reproduce the issue:

[deleted]

Thanks for reviewing.
User avatar
Tony Li
Posts: 23250
Joined: Thu Jul 18, 2013 1:27 pm

Re: triggering a Bark with an ID

Post by Tony Li »

Thanks! I'm downloading it now. I'll let you know what I find.
Post Reply