Announcements, support questions, and discussion for the Dialogue System.
cptscrimshaw
Posts: 113 Joined: Sun Sep 20, 2020 8:21 pm
Post
by cptscrimshaw » Thu Jul 28, 2022 9:20 pm
Hi Tony,
I've had this error when exiting playmode for ages but never did anything about it because it didn't seem to be affecting anything. Trying to tidy up remaining bugs, and thought you might be able to help out.
Code: Select all
Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)
The following scene GameObjects were found:
TimedCallbackManager
It appears that the only TimedCallbackManager in my game is in the PixelCrushers namespace, so hoping you might be able to offer some insight.
Thanks!
Tony Li
Posts: 22145 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Thu Jul 28, 2022 9:33 pm
Hi,
What version of the Dialogue System are you using?
What is the TimedCallbackManager script? I'm pretty sure it's not a Dialogue System thing, but maybe it came from some example scene that I don't remember.
cptscrimshaw
Posts: 113 Joined: Sun Sep 20, 2020 8:21 pm
Post
by cptscrimshaw » Fri Jul 29, 2022 12:50 am
Apologies! I should have posted this in the QuestMachine forum now that I looked where the file came from:
https://ibb.co/1Jg5wdg
Quest Machine is up-to-date except for the one you released most recently, I believe.
Here is the script:
Code: Select all
// Copyright © Pixel Crushers. All rights reserved.
using UnityEngine;
using System.Collections.Generic;
namespace PixelCrushers
{
/// <summary>
/// Invokes callback methods on timed frequencies.
/// </summary>
public class TimedCallbackManager : MonoBehaviour
{
private static TimedCallbackManager m_instance;
private static TimedCallbackManager instance
{
get
{
if (m_instance == null)
{
m_instance = new GameObject("TimedCallbackManager").AddComponent<TimedCallbackManager>();
DontDestroyOnLoad(m_instance.gameObject);
}
return m_instance;
}
}
public class CallbackInfo
{
public System.Action callback;
public float frequency;
public float remaining;
public CallbackInfo(System.Action callback, float frequency)
{
this.callback = callback;
this.frequency = frequency;
this.remaining = frequency;
}
public void Update()
{
remaining -= Time.deltaTime;
if (remaining < 0)
{
remaining = frequency;
callback();
}
}
}
private List<CallbackInfo> callbacks = new List<CallbackInfo>();
private void Update()
{
for (int i = 0; i < callbacks.Count; i++)
{
callbacks[i].Update();
}
}
public static void StartCallback(System.Action callback, float frequency)
{
instance.callbacks.Add(new CallbackInfo(callback, frequency));
}
public static void StopCallback(System.Action callback)
{
instance.callbacks.RemoveAll(x => x.callback == callback);
}
public static void StopAllCallbacks()
{
instance.callbacks.Clear();
}
}
}
Tony Li
Posts: 22145 Joined: Thu Jul 18, 2013 1:27 pm
Post
by Tony Li » Fri Jul 29, 2022 9:25 am
Hi,
Please try this patch, which should get rid of that (harmless) editor error:
[See below]
cptscrimshaw
Posts: 113 Joined: Sun Sep 20, 2020 8:21 pm
Post
by cptscrimshaw » Fri Jul 29, 2022 11:32 am
Getting a slew of errors after this patch (just two of them, but they show up several times).
https://ibb.co/qBpVr3d
Code: Select all
NullReferenceException: Object reference not set to an instance of an object
PixelCrushers.TimedCallbackManager.StartCallback (System.Action callback, System.Single frequency) (at Assets/Plugins/Pixel Crushers/Quest Machine/Third Party Support/Dialogue System Support/Scripts/Quest Conditions/TimedCallbackManager.cs:73)
PixelCrushers.QuestMachine.DialogueSystemSupport.LuaQuestCondition.StartChecking (System.Action trueAction) (at Assets/Plugins/Pixel Crushers/Quest Machine/Third Party Support/Dialogue System Support/Scripts/Quest Conditions/LuaQuestCondition.cs:44)
PixelCrushers.QuestMachine.QuestConditionSet.StartChecking (System.Action trueAction) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Condition Set/QuestConditionSet.cs:128)
PixelCrushers.QuestMachine.Quest.SetStartChecking (System.Boolean enable) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:777)
PixelCrushers.QuestMachine.Quest.SetState (PixelCrushers.QuestMachine.QuestState newState, System.Boolean informListeners) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:869)
PixelCrushers.QuestMachine.Quest.RuntimeStartup () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:760)
PixelCrushers.QuestMachine.QuestListContainer.AddQuest (PixelCrushers.QuestMachine.Quest quest, System.Boolean delayStartup) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:237)
PixelCrushers.QuestMachine.QuestListContainer.AddQuest (PixelCrushers.QuestMachine.Quest quest) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:208)
PixelCrushers.QuestMachine.QuestGiver.AddQuest (PixelCrushers.QuestMachine.Quest quest) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:318)
PixelCrushers.QuestMachine.QuestListContainer.AddQuests (System.Collections.Generic.List`1[T] listToAdd) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:198)
PixelCrushers.QuestMachine.QuestListContainer.InstantiateQuestAssets () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:165)
PixelCrushers.QuestMachine.QuestListContainer.Awake () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:149)
PixelCrushers.QuestMachine.QuestGiver.Awake () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:186)
Code: Select all
NullReferenceException: Object reference not set to an instance of an object
PixelCrushers.TimedCallbackManager.StopCallback (System.Action callback) (at Assets/Plugins/Pixel Crushers/Quest Machine/Third Party Support/Dialogue System Support/Scripts/Quest Conditions/TimedCallbackManager.cs:78)
PixelCrushers.QuestMachine.DialogueSystemSupport.LuaQuestCondition.StopChecking () (at Assets/Plugins/Pixel Crushers/Quest Machine/Third Party Support/Dialogue System Support/Scripts/Quest Conditions/LuaQuestCondition.cs:51)
PixelCrushers.QuestMachine.QuestConditionSet.StopChecking () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest Condition Set/QuestConditionSet.cs:142)
PixelCrushers.QuestMachine.Quest.SetStartChecking (System.Boolean enable) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:788)
PixelCrushers.QuestMachine.Quest.SetState (PixelCrushers.QuestMachine.QuestState newState, System.Boolean informListeners) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:869)
PixelCrushers.QuestMachine.Quest.DestroyInstance (PixelCrushers.QuestMachine.Quest quest) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest/Quest.cs:640)
PixelCrushers.QuestMachine.QuestListContainer.DeleteQuest (PixelCrushers.QuestMachine.Quest quest) (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:306)
PixelCrushers.QuestMachine.QuestListContainer.DestroyQuestInstances () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:173)
PixelCrushers.QuestMachine.QuestListContainer.OnDestroy () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestListContainer.cs:154)
PixelCrushers.QuestMachine.QuestGiver.OnDestroy () (at Assets/Plugins/Pixel Crushers/Quest Machine/Scripts/Quest MonoBehaviours/Quest List/QuestGiver.cs:232)