- Home /
How to call functions in an editor window at runtime
As the title suggests i need to be able to call a function inside an editor window at Unity runtime (not in build!). However i am currently not able to do so.
I create my window using the following code
[MenuItem("TestWindow/Add Window")]
public static void AddWindow()
{
TestWindow window = ScriptableObject.CreateInstance<TestWindow>();
window.Show();
}
And have the following functions inside TestWindow:
public class TestWindow : EditorWindow
{
private Rect testPanelRect;
private void OnEnable()
{
Debug.Log("created");
}
private void OnGUI()
{
DrawTestPanel();
}
private void DrawTestPanel()
{
testPanelRect = new Rect(0, 0, position.width, position.height);
GUILayout.BeginArea(testPanelRect, EditorStyles.toolbar);
GUILayout.BeginHorizontal();
GUILayout.Button("TestButton", EditorStyles.toolbarButton, GUILayout.Width(50));
GUILayout.Space(2);
GUILayout.EndHorizontal();
GUILayout.EndArea();
}
public void DoSomething()
{
Debug.Log("I want to be able to call this function at runtime");
}
}
However when i try to call DoSomething
i get the error NullReferenceException: Object reference not set to an instance of an object
. I know what the error means but since it is an editor window it can not be set as an instance of an Object, and i thought that creating an instance of it using ScriptableObject
would allow me to call to it in unity runtime. Am I missing something here?
Sorry, wrote up a whole answer, but now I think I just misunderstood the question. I deleted it.
This sample uses the function: EditorWindow.GetWindow rather than CreateInstance. https://docs.unity3d.com/ScriptReference/EditorWindow.html
You have to post the snipet that you actually call DoSomething(). Couple pointers:
-runtime is commonly used to refer to Playmode-Build.
-an editor window is an instance of an object and to use it's methods you need a valid reference
-regardless of the libraries you are using, C#/ mono framework works exactly the same, that being on Runtime or inside the editor because the background and workflow seems different between the two doesn't mean that rules of the language does not apply normaly.
Cheers!
Your answer
Follow this Question
Related Questions
Save EditorWindow to disk 1 Answer
How do I have an EditorWindow save it's data inbetween opening and closing Unity? C# 5 Answers
Serialization depth limit 7 exceeded 1 Answer
Custom editor window for properties with object fields; how do you save? 0 Answers
Create editor window with ScriptableObject.CreateInstance 4 Answers