EditorWindow and serialization of scene objects
Hello, I am struggling trying to get modified data serialized. I have an EditorWindow that accesses a gameobject in the scene and modifies a value on a script attached to it. The script should ideally not have any custom editor, just pure data (e.g. a public float member) specified in its monobehaviour class. What I want, is to serialize the modified value to the object in scene every time the data has been changed.
The following snippet works; as in that the data is being modified when I drag the slider in the editor window but the data is not being serialized into the object. For example, Undo.RecordObject will not recognize any changes and will not create any undo action (since there's no serialized diff).
In a desperate attempt to solve this, I have tried various options with calling serialization methods after the data has been modified but to no avail. I just can't get it to properly serialize. Methods I tried:
EditorUtility.SetDirty(test);
And/Or
SerializedObject serializedObject = new UnityEditor.SerializedObject(test);
serializedObject.Update();
serializedObject.ApplyModifiedProperties();
And/Or
EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
The snippet:
// omitted imports
public class EditorWindowSerialization : EditorWindow
{
private WindowSerialization test;
private float myFloat = 0f;
// omitted standard Init() function
void OnEnable()
{
test = GameObject.Find("Test").GetComponent<WindowSerialization>();
}
void OnGUI()
{
var origValue = test.test;
test.test = EditorGUILayout.Slider("Slider", test.test, -3, 3);
// here's why I tried forcing to serialize the object data to no avail
if (origValue != test.test)
Undo.RecordObject(test, "Test has changed");
}
}
Your answer
Follow this Question
Related Questions
A script behaviour has a different serialization layout... 7 Answers
How to Undo a bool on an EditorWindow 1 Answer
Creating an Inspector view that only changes on scene hierarchy selection or asset selection 1 Answer
Unity Android Build Publishing Settings are not saved When changed with Preset or by script 0 Answers