- Home /
Why is my SerializedProperty.objectReferenceValue Not Accepting my Object?
In the following code...
[CustomEditor(typeof(Unit))]
public class UnitEditor : Editor
{
private Editor behaviourEditor;
public override void OnInspectorGUI()
{
base.serializedObject.Update();
SerializedProperty behaviourProperty = base.serializedObject.FindProperty("behaviour");
UnitBehaviour behaviour = behaviourProperty.objectReferenceValue as UnitBehaviour;
MonoScript behaviourScript = behaviour != null ? MonoScript.FromScriptableObject(behaviour) : null;
EditorGUI.BeginChangeCheck();
{
behaviourScript = EditorGUILayout.ObjectField("Behaviour", behaviourScript, typeof(MonoScript)) as MonoScript;
}
if (EditorGUI.EndChangeCheck())
{
if (behaviour != null)
{
DestroyImmediate(behaviour);
behaviour = null;
}
if (behaviourScript != null && behaviourScript.GetClass().IsSubclassOf(typeof(UnitBehaviour)))
{
behaviour = ScriptableObject.CreateInstance(behaviourScript.GetClass()) as UnitBehaviour;
}
}
if (behaviour != null)
{
CreateCachedEditor(behaviour, null, ref this.behaviourEditor);
EditorGUILayout.Space();
this.behaviourEditor.OnInspectorGUI();
}
Debug.Log(behaviour + " : Before");// Not Null
behaviourProperty.objectReferenceValue = behaviour;// <----- This isn't working aperently
Debug.Log(behaviourProperty.objectReferenceValue + " : After");// Still Null
base.serializedObject.ApplyModifiedProperties();
}
}
I have a ScriptableObject
of Unit
and an abstract ScriptableObject
of UnitBehaviour
. My goal is to have only Unit
stored as assets and pass in a MonoScript
to declare its UnitBehaviour
and embed it's inspector within the Unit
's inspector. I used debug messages to figure out the issue and everything seems to be working fine except at the end when I go to apply the new UnitBehaviour
to the SerializedProperty
. As you can see with my comments set its value and it still shows as null. As a result applying the property wont really do much and on the next GUI update it will think the MonoScript
is null and erase everything.
Your answer
Follow this Question
Related Questions
Handling Undo/REdo in EditorWindow when editing DB record. 0 Answers
Script work in editor but not in build 0 Answers
Create Multiple Foldouts. 1 Answer