- Home /
 
               Question by 
               whisker-ship · Jul 07, 2017 at 07:41 PM · 
                c#editorsceneeditor-scriptingprogramming  
              
 
              How can I make function run in the editor only when I press a button in the inspector?
I'd like to create a script that has a button that shows in the inspector. When that button is pressed I want it to run a certain function (withing that same script) in the unity editor.
Kind of like [ExecuteInEditMode] but only when I press a button I created in the inspector instead of every frame.
               Comment
              
 
               
               
               Best Answer 
              
 
              Answer by CoryButler · Jul 08, 2017 at 03:35 AM
Creating a custom editor window may work well for you. Here is an example.
 using UnityEngine;
 using UnityEditor;
 
 public class EditModeFunctions : EditorWindow
 {
     [MenuItem("Window/Edit Mode Functions")]
     public static void ShowWindow()
     {
         GetWindow<EditModeFunctions>("Edit Mode Functions");
     }
 
     private void OnGUI()
     {
         if (GUILayout.Button("Run Function"))
         {
             FunctionToRun();
         }
     }
 
     private void FunctionToRun()
     {
         Debug.Log("The function ran.");
     }
 }
Let this script compile in Unity. Then, select Window > Edit Mode Functions.

Now, just click the "Run Function" button to run your function in edit mode.

 
                 
                windowdropdown.png 
                (3.9 kB) 
               
 
                
                 
                editmodefuncwindow.png 
                (11.3 kB) 
               
 
              Your answer
 
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Custom Editor Script resets values on Play 1 Answer
Z sorting of Handles 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                