Announcements, support questions, and discussion for the Dialogue System.
SindriaGames
Posts: 10 Joined: Sun Apr 06, 2025 1:17 pm
Post
by SindriaGames » Tue Apr 08, 2025 1:52 pm
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 (385.47 KiB) Viewed 2185 times
dialogueactor has ui.png (426.51 KiB) Viewed 2185 times
dialogues.png (159.71 KiB) Viewed 2185 times
Tony Li
Posts: 23250 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Tue Apr 08, 2025 3:39 pm
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
Post
by SindriaGames » Tue Apr 08, 2025 10:35 pm
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 (80.7 KiB) Viewed 2180 times
Tony Li
Posts: 23250 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Tue Apr 08, 2025 10:47 pm
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
Post
by SindriaGames » Wed Apr 09, 2025 5:29 am
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 (79.73 KiB) Viewed 2174 times
Tony Li
Posts: 23250 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Wed Apr 09, 2025 8:01 am
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
Post
by SindriaGames » Wed Apr 09, 2025 11:26 am
Yes my scene has the Dialogue manager prefab and the version is: v.2.2.47
Tony Li
Posts: 23250 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Wed Apr 09, 2025 11:56 am
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
Post
by SindriaGames » Wed Apr 09, 2025 3:04 pm
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.
Tony Li
Posts: 23250 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Wed Apr 09, 2025 3:47 pm
Thanks! I'm downloading it now. I'll let you know what I find.