I am not sure if I am missing anything to get the quest HUD tracking to work.
I made a quest and marked it as Trackable. I've verified the conversation script assigned the quest properly with different conversation nodes based on the State condition.
When breakpointing into the code here:
public void UpdateTracker() {
DestroyInstantiatedItems();
foreach (string quest in QuestLog.GetAllQuests()) {
if (QuestLog.IsQuestActive(quest) && QuestLog.IsQuestTrackingEnabled(quest)) {
InstantiateQuestTrack(quest);
}
}
}
QuestLog.IsQuestTrackingEnabled(quest) is evaluating to FALSE.
I've followed this how-to to add the Unity UI prefab to canvas and component to dialogue manager game object.
Quest HUD Tracker not tracking
Quest HUD Tracker not tracking
Is the quest's Track field set to true? When Trackable is true, the player can choose to enable or disable tracking in the quest log window. When Track is true, either set through the quest log window or manually by you at design time or runtime, the quest tracker HUD will actually track the quest. If you set it manually, you need to call UpdateTracker() to update the HUD.
Quest HUD Tracker not tracking
I was not wanting a quest log window in the UI at all, just merely a quest or two at a time much like current level's objectives.
Which object does "Track" exist on (i.e. to accomplish: "manually by you at design time or runtime") ?
And does it just need to be flagged once at startup or is it per quest?
Which object does "Track" exist on (i.e. to accomplish: "manually by you at design time or runtime") ?
And does it just need to be flagged once at startup or is it per quest?
Quest HUD Tracker not tracking
I'm guessing its per quest and this would call does it:
PixelCrushers.DialogueSystem.QuestLog.SetQuestTracking("quest title", true);
Is there any why to trigger that when the conversation Script section sets the State to "active" ?
What event hooks are there?
PixelCrushers.DialogueSystem.QuestLog.SetQuestTracking("quest title", true);
Is there any why to trigger that when the conversation Script section sets the State to "active" ?
What event hooks are there?
Quest HUD Tracker not tracking
Internally, QuestLog.SetQuestTracking() sets the value of a field named Track. You can bypass SetQuestTracking() and simply set Track to True at design time. Here's how:
When you write your quest, create a field named Track. Set its type to Boolean and its value to True. If you're using the built-in Dialogue Editor, expand All Fields, and then click the "+" all the way to the right of All Fields. This will add a field at the bottom of the list. Set Name, Value, and Type.
You can also add a Track field to the quest template on the Templates tab. This will automatically add it to any new quests. To apply the template to existing quests, click the Template button in the quest's All Fields section.
If you're using Chat Mapper, add it as a custom asset field in the Item table.
When conversations end, they send the message "UpdateTracker" to the Dialogue Manager GameObject. If you put the Quest Tracker component on the Dialogue Manager, it will automatically update the tracker.
That should take care of it.
You can also manually call UpdateTracker whenever you want:
DialogueManager.Instance.SendMessage("UpdateTracker");
(Or use GetComponent() to get the QuestTracker, but I can't seem to get angle brackets to come through properly with this forum software.)
Since you asked about event hooks, you can also set a Quest State Observer. This will call a C# delegate whenever a quest's state changes.
When you write your quest, create a field named Track. Set its type to Boolean and its value to True. If you're using the built-in Dialogue Editor, expand All Fields, and then click the "+" all the way to the right of All Fields. This will add a field at the bottom of the list. Set Name, Value, and Type.
You can also add a Track field to the quest template on the Templates tab. This will automatically add it to any new quests. To apply the template to existing quests, click the Template button in the quest's All Fields section.
If you're using Chat Mapper, add it as a custom asset field in the Item table.
When conversations end, they send the message "UpdateTracker" to the Dialogue Manager GameObject. If you put the Quest Tracker component on the Dialogue Manager, it will automatically update the tracker.
That should take care of it.
You can also manually call UpdateTracker whenever you want:
DialogueManager.Instance.SendMessage("UpdateTracker");
(Or use GetComponent() to get the QuestTracker, but I can't seem to get angle brackets to come through properly with this forum software.)
Since you asked about event hooks, you can also set a Quest State Observer. This will call a C# delegate whenever a quest's state changes.
Quest HUD Tracker not tracking
Many thanks!
Design time template field was exactly what I was looking for.
Design time template field was exactly what I was looking for.