Custom Inspector Script Resetting Information
I created a Custom Editor for a GunObject class which should allow you to select a MonoScript (which is a class that derives from FireBehaviour) and then create an instance of that class which is stored in the GunObject.
It works perfectly fine until I press the Play button or select a different target for the Inspector, which causes the information displayed in the Inspector is reset.
Here is the Editor Script:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEditor;
 
 [CustomEditor(typeof(GunObject))]
 public class WeaponScriptEditor : Editor {
     private SerializedProperty behaviour;
     private MonoScript behaviourScript;
 
     public void OnEnable() {
         behaviour = serializedObject.FindProperty("behaviour");
     }
 
     public override void OnInspectorGUI() {
         serializedObject.Update ();
 
         FireBehaviour b=null;
     
         behaviourScript = (MonoScript)EditorGUILayout.ObjectField ("Fire Behaviour", behaviourScript, typeof(MonoScript), false);
 
         if (behaviourScript != null && behaviourScript.GetClass ().IsSubclassOf (typeof(FireBehaviour))) {
             b = (FireBehaviour)ScriptableObject.CreateInstance (behaviourScript.GetClass ());
             Editor editor = Editor.CreateEditor (b);
 
             EditorGUILayout.LabelField ("Fire Behaviour Editor:");
 
             editor.OnInspectorGUI ();
 
             AssetDatabase.AddObjectToAsset (b, target);
             behaviour.objectReferenceValue = b;
 
         } else {
             EditorGUILayout.LabelField ("Script must derive from FireBehaviour!");
         }
 
         serializedObject.ApplyModifiedProperties();
     }
 }
Here is the GunObject Class:
 using UnityEngine;
 using UnityEngine.Events;
 using System.Collections;
 using UnityEditor;
 
 [CreateAssetMenu()]
 public class GunObject : ScriptableObject {
 
     public FireBehaviour behaviour;
 
 
     public void Act() {
         if (Input.GetButton ("Primary Fire")) {
             behaviour.PrimFire ();
         }
         if (Input.GetButton ("Alt Fire")) {
             behaviour.AltFire ();
         }
         if (Input.GetButton ("Reload")) {
             behaviour.Reload ();
         }
     }
 }
 
Here is the FireBehaviour Class:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class FireBehaviour : ScriptableObject {
 
     public virtual void PrimFire () {}
     public virtual void AltFire () {}
     public virtual void Reload () {}
 
 }
I've tried a few different things including AssetDatabase.SaveAssets among others, but nothing I find online seems to work.
Also, AssetDatabase.AddObjectToAsset keeps adding new instances to the asset every time OnInspectorGUI is called, so I was wondering if there was a better way to go about that.
Thanks for any help! I could really use some.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                