- Home /
Syntax for EditorApplication.playmodeStateChanged
I would like to build an editor helper which sets my game to it's first scene when I click play, regardless of which scene was open in the editor.
I thus need to detect when the editor's playmode state changes, but the syntax for registering an editor delegate in C# currently has me stumped.
Many thanks to anyone who can provide sample code for playmodeStateChanged!
This code:
using UnityEngine;
using UnityEditor;
using System.Collections;
public class EditorHelper : EditorWindow {
void playmodeStateChanged () {
Debug.Log("State Changed!");
}
}
results in this error:
ArgumentException: CompareBaseObjects can only be called from the main thread.
Constructors and field initializers will be executed from the loading thread when loading a scene.
Don't use this function in the constructor or field initializers, instead move initialization code to the Awake or Start function.
UnityEngine.Object.op_Implicit (UnityEngine.Object exists)
Answer by syclamoth · Nov 28, 2011 at 04:17 AM
As far as I can tell, what you do here is this-
using UnityEngine;
using UnityEditor;
using System.Collections;
public class EditorHelper : EditorWindow {
public void Awake() {
EditorApplication.playmodeStateChanged += PlaymodeCallback;
}
public void PlaymodeCallback () {
Debug.Log("State Changed!");
}
}
Also, I think you might be mistaken as to what is causing that error- that is usually caused when you try to use a constructor or something with a MonoBehaviour or other special Unity class!
Thanks for your clarification! This makes more sense. I realized that I was grossly overthinking my original problem and didn't need anything other than checking if time was 0 in Awake, but I am sure I and others will have uses for editor delegates in the future.
Shouldn't it be
EditorApplication.playmodeStateChanged += PlaymodeCallback;
I don't think just using = works, I think you need to use +=.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
What is the name of this List-like Editor Control? 2 Answers
[Editor Scripting] Call Function in other GameObjects Editor Script? 0 Answers
Animation selector Editor. Losing data at runtime. Awake() returns Debug.Log several times. 1 Answer