Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 Jun 22 - 14 Jun 22
sparklines
Close Help
  • 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 jcwhite_nc · May 10, 2021 at 05:30 PM · c#custom editorcustom-inspectorcustom inspectorcustom-editor

Objects in Custom Editor Resetting on Play

I'm trying to have a list of steps shown in the custom editor and then updating the serialized Object with some values. Whenever I press play the StepRestriction.referenceStep and StepRestriction.stepIndex are reset to the first item in the steps list and 0. I've looked on previous forums and the general response is to add serializedObject.Update() and serializedObject.ApplyModifiedProperties(), but I have both of these. I'm lost on why they keep resetting.

 using System.Collections.Generic;
 using UnityEditor;
 using UnityEngine;
 
 namespace TutorialSystem
 {
 ...
     public class StepRestriction : MonoBehaviour
     {
         [SerializeField]
         RestrictionType restrictionType;
         [SerializeField]
         TutorialManager tutorialManager;
 
         [SerializeField]
         TutorialStep referenceStep;
 
         [SerializeField]
         public int stepIndex;
  
         [SerializeField]
         internal List<RestrictionPair> restrictions = new List<RestrictionPair>();
 
 ...
     }
 
 #if UNITY_EDITOR
     [CustomEditor(typeof(StepRestriction))]
     public class StepRestrictionInspector : Editor
     {
         SerializedProperty p_restrictionType;
         SerializedProperty p_tutorialManager;
         SerializedProperty p_stepIndex;
         SerializedProperty p_onStep;
         SerializedProperty p_referenceStep;
 
         int selectedStepIndex;
 
         private void OnEnable()
         {
             p_restrictionType = serializedObject.FindProperty("restrictionType");
             p_tutorialManager = serializedObject.FindProperty("tutorialManager");
             p_stepIndex = serializedObject.FindProperty("stepIndex");
             p_onStep = serializedObject.FindProperty("onStep");
             p_referenceStep = serializedObject.FindProperty("referenceStep");
         }
 
         public override void OnInspectorGUI()
         {
             serializedObject.Update();
 ...
             EditorGUILayout.PropertyField(p_tutorialManager);
             ShowSteps();
             ShowRestrictions();
 
             serializedObject.ApplyModifiedProperties();
         }
 ...
         private void ShowSteps()
         {
             TutorialManager manager = 
                       (TutorialManager)p_tutorialManager.objectReferenceValue;
             if (manager == null) return;
 
             TutorialStep[] steps = manager.GetSteps();
 
             //create the array for the step names
             string[] stepStrings = new string[steps.Length];
             for (int i = 0; i < steps.Length; i++)
             {
                 stepStrings[i] = steps[i].name;
             }
 
             //set the step from the popup
             selectedStepIndex = EditorGUILayout.Popup(new GUIContent("Step"), 
                           selectedStepIndex, stepStrings);
             p_stepIndex.intValue = selectedStepIndex;
             p_referenceStep.objectReferenceInstanceIDValue = 
                 steps[selectedStepIndex].GetInstanceID();
         }
     }
 
 #endif
 }





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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by fleity · May 10, 2021 at 08:02 PM

it is a bit a wild guess in the dark but I don't see you writing back to p_stepIndex.value or drawing it a property field which would do the same under the hood. Additionally it might be necessary to explizitly make TutorialStep serializable in its own class, but the int should work that way.

Comment
Add comment · Show 2 · Share
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
avatar image jcwhite_nc · May 10, 2021 at 08:14 PM 0
Share

Tutorialstep inherits from GameObject so it is serializable. And according to my understanding p_stepIndex.intValue is being set on line 77 so it is supposed to be updating.

avatar image fleity jcwhite_nc · May 11, 2021 at 12:21 PM 0
Share

ah sorry I was a bit code blind already yesterday. What works for me is reading the selectedIndex from the serializedProperty back first. Disregard the GameObject Array, all you really need to add is selectedStepIndex = p_stepIndex.intValue;

         private void ShowSteps()
         {
             selectedStepIndex = p_stepIndex.intValue;
             GameObject[] steps = new GameObject[p_referenceSteps.arraySize];
             for (int i = 0; i < steps.Length; i++)
             {
                 steps[i] = p_referenceSteps.GetArrayElementAtIndex(i).objectReferenceValue as GameObject;
             }
 
             //create the array for the step names
             string[] stepStrings = new string[steps.Length];
             for (int i = 0; i < steps.Length; i++)
             {
                 stepStrings[i] = steps[i].name;
             }
 
             //set the step from the popup
             selectedStepIndex = EditorGUILayout.Popup(new GUIContent("Step"),
                           selectedStepIndex, stepStrings);
             p_stepIndex.intValue = selectedStepIndex;
         }

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.

Follow this Question

Answers Answers and Comments

751 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 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 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 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 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

No type in ObjectField created in uxml (UIElements) 3 Answers

SetDirty not working in Custom Editor with Nested Custom Property drawer 1 Answer

ApplyModifiedProperties() ignored on nested serialized property w custom editor and custom property drawer 2 Answers

Custom Editor: Array of Structs with elements hidden by toggles 0 Answers

Unity Custom Editor: 1 True Bool Only Within A Group 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