• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by Rayeloy · Mar 16, 2019 at 02:44 AM · editor-scriptingscriptableobjectonenable

Editor Script OnEnable() being executed whatever I do when pressing play in editor.

So I have an editor script for a scriptable object. After a lot of effort managed to make it work properly in the editor, but when I press play, even if the inspector is empty or "Inspecting" another object, t$$anonymous$$s scriptable object's editor scripts gets executed like 180 times. When I made it print what was the "target", or the item I was supposedly inspecting in the editor, it returned "null". So I made if(target ==null) return; w$$anonymous$$ch works... but I can't help but feel disturbed when I know everytime I press play that script will be executed 180 times for no reason. Any Ideas? One last t$$anonymous$$ng I wanted to explain is that t$$anonymous$$s scriptable object is only used as complex data type inside another scriptable object "AttackData" that contain several of these "AttackPhase". The code is t$$anonymous$$s:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEditor;
 
 [CustomEditor(typeof(AttackPhase))]
 [CanEditMultipleObjects]
 public class AttackPhaseEditor : Editor
 {
     public bool showPhase;
 
     private string phaseName = null;
     protected AttackPhase myAttackPhase;
 
     SerializedProperty isFoldedInEditor;
 
     SerializedProperty duration;
     SerializedProperty restrictRotation;
     SerializedProperty rotationSpeed;
     SerializedProperty hasHitbox;
     SerializedProperty $$anonymous$$tboxPrefab;
 
 
 
     private void OnEnable()
     {
         Init();
     }
 
 
     protected virtual void Init()
     {
         if (target == null) return;
         myAttackPhase = (AttackPhase)target;
 
         isFoldedInEditor = serializedObject.FindProperty("isFoldedInEditor");
 
         duration = serializedObject.FindProperty("duration");
         restrictRotation = serializedObject.FindProperty("restrictRotation");
         rotationSpeed = serializedObject.FindProperty("rotationSpeed");
         hasHitbox = serializedObject.FindProperty("hasHitbox");
         $$anonymous$$tboxPrefab = serializedObject.FindProperty("$$anonymous$$tboxPrefab");
     }
 
     public override void OnInspectorGUI()
     {
         serializedObject.Update();
 
         EditorGUILayout.BeginVertical(GUI.skin.box);
         EditorGUI.indentLevel++;
 
         EditorGUILayout.BeginHorizontal();
 
         isFoldedInEditor.boolValue = EditorGUILayout.Foldout(isFoldedInEditor.boolValue, phaseName);
 
         EditorGUILayout.EndHorizontal();
 
         if (isFoldedInEditor.boolValue)
         {
             DrawPhase();
         }
 
         EditorGUI.indentLevel--;
         EditorGUILayout.EndVertical();
 
         serializedObject.ApplyModifiedProperties();
     }
 
     protected virtual void DrawPhase()
     {
         EditorGUILayout.PropertyField(duration);
         EditorGUILayout.PropertyField(restrictRotation);
         if (restrictRotation.boolValue)
         {
             EditorGUILayout.PropertyField(rotationSpeed);
         }
 
         EditorGUILayout.BeginHorizontal();
         hasHitbox.boolValue = EditorGUILayout.Toggle(hasHitbox.boolValue, GUILayout.Width(25));
         if (hasHitbox.boolValue)
         {
             $$anonymous$$tboxPrefab.objectReferenceValue = EditorGUILayout.ObjectField(
                 new GUIContent("Hitbox Prefab", "Add the $$anonymous$$tbox prefab"), $$anonymous$$tboxPrefab.objectReferenceValue, typeof(GameObject), false);
         }
         else
         {
             GUILayout.Space(12);
             GUILayout.Label("Hitbox Prefab", GUILayout.Width(100));
 
         }
         EditorGUILayout.EndHorizontal();
     }
 
     public void SetUpEditorData(string name, AttackPhase attackPhase)
     {
         if(phaseName == null){
             phaseName = name;
         }
     }
 
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

178 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How can I get a sub asset? 1 Answer

Unity losing reference of externally modified ScriptableObjet in Editorscript 1 Answer

How to edit Properties of a ScriptableObject asset, specificly arrays/lists 0 Answers

ScriptableObject alternative, editable at runtime 0 Answers

Changes to asset data persist - unable to discard changes 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges