NullReferenceException: Object reference not set to an instance of an object
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow+<>c.<SortItemsByGroup>b__361_0 (PixelCrushers.DialogueSystem.Item x, PixelCrushers.DialogueSystem.Item y) (at Assets/3rd-Party/Pixel Crushers/Dialogue System/Scripts/Editor/Dialogue Editor/DialogueEditorWindowItemSection.cs:275)
System.Collections.Generic.ArraySortHelper`1[T].InsertionSort (T[] keys, System.Int32 lo, System.Int32 hi, System.Comparison`1[T] comparer) (at <9577ac7a62ef43179789031239ba8798>:0)
System.Collections.Generic.ArraySortHelper`1[T].IntroSort (T[] keys, System.Int32 lo, System.Int32 hi, System.Int32 depthLimit, System.Comparison`1[T] comparer) (at <9577ac7a62ef43179789031239ba8798>:0)
System.Collections.Generic.ArraySortHelper`1[T].IntrospectiveSort (T[] keys, System.Int32 left, System.Int32 length, System.Comparison`1[T] comparer) (at <9577ac7a62ef43179789031239ba8798>:0)
System.Collections.Generic.ArraySortHelper`1[T].Sort (T[] keys, System.Int32 index, System.Int32 length, System.Comparison`1[T] comparer) (at <9577ac7a62ef43179789031239ba8798>:0)
Rethrow as InvalidOperationException: Failed to compare two elements in the array.
System.Collections.Generic.ArraySortHelper`1[T].Sort (T[] keys, System.Int32 index, System.Int32 length, System.Comparison`1[T] comparer) (at <9577ac7a62ef43179789031239ba8798>:0)
System.Collections.Generic.List`1[T].Sort (System.Comparison`1[T] comparison) (at <9577ac7a62ef43179789031239ba8798>:0)
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow.SortItemsByGroup () (at Assets/3rd-Party/Pixel Crushers/Dialogue System/Scripts/Editor/Dialogue Editor/DialogueEditorWindowItemSection.cs:275)
UnityEditor.GenericMenu.CatchMenu (System.Object userData, System.String[] options, System.Int32 selected) (at <7d90b28560b644ce87b8263efcc36eed>:0)
To generate this error you need to make following steps:
1. Open windows with quests view.
2. Set one quest to be in group
3. Sort by group -> error
I think I have a bug with override dialogue manager settings in conversations.
When I override some settings in conversation they are not used in the game
I attach a simple project with an example (password in private message).
To check the problem play SampleScene.
Settings:
- I have two conversations - Conversation1 and Conversation2.
- In DialogueManager I set a checkbox "Include Invalid Entries".
- In Conversation2 I override Display Settings and set checkbox "Include Invalid Entries" to false.
- Conversation1 has direct link to Conversation2
- Quest is used to simulate situation
Expected behaviour
1. Start the conversation
2. Player see 3 options (option “Maybe” is not able to choose)
3. Player choose "Yes" options
4. Player see 2 options - “Option 1” and “Option 2”
At this moment, in step 4 I see three options ("Option 3" is not able to choose).
In addition, I see an empty option to choose when I show a linked conversation. Can you say what is the source of the problem?
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 am1. If there any place where is an info which scripts are required for DS to work? E.g. We don't demo project, arts, etc? Maybe wrappers?
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 am2. Is it possible to group quests in the same way like conversations or variables?
Yes. Use forward slashes in the quest's Name. You probably won't want to show the Name in gameplay UIs, so also set the Display Name.
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 am3. Is it possible to set some quest rows in Dialogue window to another color? E.g. based on the group or tag
I'm not sure I understand. But you can set a custom node color for each actor. On the Actors panel, inspect an actor and tick Use Custom Color.
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 am4. If one of quest in dialogue window is not mark as group and we want to sort all quests by group then I get the following error error
NullReferenceException: Object reference not set to an instance of an object
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow+<>c.<SortItemsByGroup>b__361_0 (PixelCrushers.DialogueSystem.Item x, PixelCrushers.DialogueSystem.Item y) (at Assets/3rd-Party/Pixel Crushers/Dialogue System/Scripts/Editor/Dialogue Editor/DialogueEditorWindowItemSection.cs:275)...
Thanks for reporting that. I'll investigate it and provide a fix in the next release.
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 am[*] I think I have a bug with override dialogue manager settings in conversations.
When I override some settings in conversation they are not used in the game
I attach a simple project with an example (password in private message).
To check the problem play SampleScene.
Settings:
- I have two conversations - Conversation1 and Conversation2.
- In DialogueManager I set a checkbox "Include Invalid Entries".
- In Conversation2 I override Display Settings and set checkbox "Include Invalid Entries" to false.
- Conversation1 has direct link to Conversation2
- Quest is used to simulate situation
Expected behaviour
1. Start the conversation
2. Player see 3 options (option “Maybe” is not able to choose)
3. Player choose "Yes" options
4. Player see 2 options - “Option 1” and “Option 2”
At this moment, in step 4 I see three options ("Option 3" is not able to choose).
In addition, I see an empty option to choose when I show a linked conversation. Can you say what is the source of the problem?
I'll take a look and reply back by the end of the day.
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 amWhen I override some settings in conversation they are not used in the game
This is by design. There is a conceptual difference between conversation data in the dialogue database and the "active conversation instance" that is playing at runtime. When you start a conversation, the active conversation instance uses that conversation's settings, even if you link back and forth between different nodes in different conversations in the database.
Krejwen wrote: ↑Wed Dec 23, 2020 4:30 amIn addition, I see an empty option to choose when I show a linked conversation. Can you say what is the source of the problem?
Link to "Ok, what do you want to know?", not to <START>. (Or change the actor assigned to <START> to be the NPC.)
Thanks for answer! I see that I was not precise in some questions. Below there are additional info.
Yes. Use forward slashes in the quest's Name. You probably won't want to show the Name in gameplay UIs, so also set the Display Name.
Is it possible to show them in foldout groups like Variables?
I'm not sure I understand. But you can set a custom node color for each actor. On the Actors panel, inspect an actor and tick Use Custom Color.
I want to set color in Editor GUI dialogue, like in picture below, to be able detect which quests are from which "category" or groups. If you have e.g. 100 quests that can help organize them.
EditorColor.jpg (34.4 KiB) Viewed 626 times
This is by design. There is a conceptual difference between conversation data in the dialogue database and the "active conversation instance" that is playing at runtime. When you start a conversation, the active conversation instance uses that conversation's settings, even if you link back and forth between different nodes in different conversations in the database.
So it is possible to change settings of "active conversation instance"? My goal is to change them in case when node is linked to another conversation with overrided settings?
Yes. Use forward slashes in the quest's Name. You probably won't want to show the Name in gameplay UIs, so also set the Display Name.
Is it possible to show them in foldout groups like Variables?
Not in the current version. This is a feature I'd like to add in the future. However, you can sort quests by Name. This way you can get all the quests in the same group to appear together in the list.
Krejwen wrote: ↑Mon Jan 04, 2021 5:52 amI want to set color in Editor GUI dialogue, like in picture below, to be able detect which quests are from which "category" or groups. If you have e.g. 100 quests that can help organize them.
That's a good idea. I'll add that to consideration for a future update.
This is by design. There is a conceptual difference between conversation data in the dialogue database and the "active conversation instance" that is playing at runtime. When you start a conversation, the active conversation instance uses that conversation's settings, even if you link back and forth between different nodes in different conversations in the database.
So it is possible to change settings of "active conversation instance"? My goal is to change them in case when node is linked to another conversation with overrided settings?
Yes. You can add a script to the Dialogue Manager that has an OnLinkedConversationStart() method. In that method, set DialogueManager.displaySettings.conversationOverrideSettings:
void OnLinkedConversationStart(Transform actor)
{
var conversationID = DialogueManager.currentConversationState.subtitle.dialogueEntry.conversationID;
var conversation = DialogueManager.masterDatabase.GetConversation(conversationID);
DialogueManager.displaySettings.conversationOverrideSettings = conversation.overrideSettings;
}
p.s. - In the next release, changing to a linked conversation will change the active conversation to use the new conversation's override settings since this turned out to be requested by several people.
You can add a script to the Dialogue Manager that has an OnLinkedConversationStart() method.
I made it but it doesn't work. Data for the UI is set when a conversation is starting but we don't start the UI again when the conversation is switched to another one (the linked one).
Version 2.2.15 is on schedule for release early next week. It applies override settings when linking to another conversation. That may be another workable solution for you.