- Home /
Custom Editor changes value of other scripts
I have a custom editor that changes some properties of my object lets call it MainNode. MainNode has references to other objects, let us call them nodes. When inspector finds out that change was made it calls function of MainNode like target.OnColorParamChange()
, which edits values of nodes. Problem is that those changes are not marked as dirty. I can set them dirty by calling
EditorUtility.SetDirty(node)
but I don't want to call it in all functions.
Also marking whole scene dirty does not work on those nodes
if(paramContainer.IsDataChangedThisFrame()) {
EditorSceneManager.MarkSceneDirty(taget.gameObject.scene);
}
MainNode Also uses Undo
Undo.RecordObject(base.target as Object,"Recorded");
Those nodes are serialized also when i open unity editor select MainNode on scene and click apply changes to prefab
PS: When i remove prefab of gameobject with MainNode script from assets, It is serialized properly with all changes made to nodes. Unity 5.6.1f1
Answer by OliverAnthony · Jul 19, 2017 at 05:26 PM
You may find that you run into less issues if you write your custom editor code to deal with the SerializedObject and its SerializedProperties directly.
I have my custom editor, but SerializedObject and properties won't do here (as I guess), since I edit code of other classes, and they need to calculate some stuff. As I was fighting with this problem it seems that it is related directly with having prefab. Without prefab all works fine. Still removing prefab is not solution I can accept
Your answer
![](https://koobas.hobune.stream/wayback/20220612130630im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Saving editor-only variables 0 Answers
Displaying System.objects not serialized by Unity in a Custom Editor 0 Answers
Serialize custom multidimensional array from Inspector 3 Answers
EditorGUILayout.PropertyField cannot draw custom class? 2 Answers
How do I save scripts as variables in the inspector? 0 Answers