Page 1 of 1

Script Unknown on Gameobject null missing...

Posted: Wed Jun 15, 2022 7:16 pm
by HawkX
New subject for a new weird error... and while i REALLY STRONGLY doubt it is related to pixelcrusher or the dialoguesystem, in the trace of the error, it shows 1 of your scripts! :P

I think this started happening when i deleted an old prefab that we were no longer using...

The referenced script (Unknown) on this Behaviour is missing!
UnityEngine.StackTraceUtility:ExtractStackTrace ()
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:HandlePlayModeStateChanged () (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:203)
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:OnPlayModeStateChanged (UnityEditor.PlayModeStateChange) (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:191)
UnityEditor.EditorApplication:Internal_PlayModeStateChanged (UnityEditor.PlayModeStateChange)

and

The referenced script on this Behaviour (Game Object '<null>') is missing!
UnityEngine.StackTraceUtility:ExtractStackTrace ()
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:HandlePlayModeStateChanged () (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:203)
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:OnPlayModeStateChanged (UnityEditor.PlayModeStateChange) (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:191)
UnityEditor.EditorApplication:Internal_PlayModeStateChanged (UnityEditor.PlayModeStateChange)


When i double click on either of those, i get to : private void HandlePlayModeStateChanged()
in the file DialogueEditorWindowMain.cs

I have searched in my scene and in every prefab I could think of to see if there was any "missing" script, or invalid link but was not able to find any...

Considering your insanely vast knowledge, what would you suggest? :)

Re: Script Unknown on Gameobject null missing...

Posted: Wed Jun 15, 2022 8:39 pm
by Tony Li
When you enter and exit play mode while the Dialogue Editor window is open, the Dialogue Editor window calls UnityEditor.AssetDatabase.SaveAssets() to tell Unity to flush asset changes to disk. If the open scene has any missing scripts, Unity will report this error.

The editor script in this video should help you identify which GameObjects have missing scripts:


Re: Script Unknown on Gameobject null missing...

Posted: Wed Jun 15, 2022 9:27 pm
by HawkX
Again, thank you so much for coming to the rescue!

However, I am following the video, double checking that I got everything right...

NullReferenceException: Object reference not set to an instance of an object
FindMissing.FindMissingScriptInProject () (at Assets/Scripts/EditorOnly/FindMissingScript_Editor/FindMissing.cs:25)

which refers to "this line"

foreach(Component component in prefab.GetComponentsInChildren<Component>())

I re-checked a bunch of time and couldnt find any typos from the video to what I had written...

Here is my whole script just in case (its often something stupid which make it so frustrating) :

Code: Select all

[MenuItem("Tools/Find Missing Scripts Tony")]
    static void FindMissingScriptInProject()
    {
        string[] prefabPaths = AssetDatabase.GetAllAssetPaths().Where(path => path.EndsWith(".prefab", System.StringComparison.OrdinalIgnoreCase)).ToArray();

        foreach (string path in prefabPaths)
        {
            GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);

            foreach(Component component in prefab.GetComponentsInChildren<Component>())
            {
                if (component == null)
                {
                    Debug.Log("Prefab found with missing script " + path, prefab);
                    break;
                }
            }
        }
    }

Re: Script Unknown on Gameobject null missing...

Posted: Wed Jun 15, 2022 9:48 pm
by Tony Li
Try adding this code before that line:

Code: Select all

if (prefab == null) 
{
    Debug.Log("Can't load prefab at: " + path);
    continue;
}

Re: Script Unknown on Gameobject null missing...

Posted: Wed Jun 15, 2022 11:20 pm
by HawkX
THANK you again so freakin much!! :)

What would I do without your help...

As suspsected it had NOTHING to do at all with Dialogue system (as you said it was just being reported by its editor)

Probably a batch of shaders that someone from my team cleaned up last week...
all 4 of them are :Can't load prefab at: Assets/Particles/Cartoon FX/CFX4 Prefabs (Mobile)/.... (etc) .prefab

Re: Script Unknown on Gameobject null missing...

Posted: Thu Jun 16, 2022 8:03 am
by Tony Li
Glad to help!

Re: Script Unknown on Gameobject null missing...

Posted: Thu Jun 16, 2022 10:55 am
by HawkX
While the scripts/video you suggested DID find 8 broken prefabs that I was able to replace/fix fully...

I am still getting these 2 errors whenever I press "play" in my scene...
(i think it might be because of previously deleted prefabs and/or scripts)... but if they are completely deleted and no longer referenced by anything, they just shouldnt even be mentionned...
Again, I know its a Unity issue at this point and only being called out by your system but you might have some valid suggestion or insight on how to solve this :)

Code: Select all

The referenced script (Unknown) on this Behaviour is missing!
UnityEngine.StackTraceUtility:ExtractStackTrace ()
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:HandlePlayModeStateChanged () (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:203)
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:OnPlayModeStateChanged (UnityEditor.PlayModeStateChange) (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:191)
UnityEditor.EditorApplication:Internal_PlayModeStateChanged (UnityEditor.PlayModeStateChange)

Code: Select all

The referenced script on this Behaviour (Game Object '<null>') is missing!
UnityEngine.StackTraceUtility:ExtractStackTrace ()
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:HandlePlayModeStateChanged () (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:203)
PixelCrushers.DialogueSystem.DialogueEditor.DialogueEditorWindow:OnPlayModeStateChanged (UnityEditor.PlayModeStateChange) (at Assets/Scripts/EditorOnly/PixelCrusher/DialogueSystem/Scripts/Editor/Dialogue Editor/DialogueEditorWindowMain.cs:191)
UnityEditor.EditorApplication:Internal_PlayModeStateChanged (UnityEditor.PlayModeStateChange)

Re: Script Unknown on Gameobject null missing...

Posted: Thu Jun 16, 2022 1:17 pm
by Tony Li
No, sorry, I can't think of anything except brute force -- make a copy of your entire project. Open the copy, delete about half of the content, and enter play mode. If the error is gone, you know the issue is in the half you deleted. If the issue is still present, it's in the content that you kept.

Re: Script Unknown on Gameobject null missing...

Posted: Thu Jun 16, 2022 1:19 pm
by HawkX
hahahaha i love it! :)

Alright then i guess i'll start doing that when i got some free time!