Custom Inspector : Losing Data

Hi …
i have some problem with my custom inspector,
my costum inspector have object field that held many game object , but when i tried to run the game the object field goes blank (null)

i already tried to googling but still not fix …
i tried to use the same script as other do from here :
https://forum.unity3d.com/threads/custom-editor-losing-settings-on-play.130889/
and edit it
just like this …

using UnityEngine;
using System.Collections;

[System.Serializable]
public class HiddenObject {
	
	 public GameObject[,] enemy = new GameObject[6,60];
	public int wave = 0;
	public int[] enemyCount = new int[60] ;
	public int[] enemyInTheScene = new int[60] ;


}
---------------------------------------------------------------------------------------------------------------------------------
using UnityEngine;
using System.Collections;

public class Inventory : MonoBehaviour {

	public HiddenObject hiddenObject ;
}

---------------------------------------------------------------------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEditor;

[CustomEditor(typeof(Inventory))]
public class InventoryEditor : Editor {

	private Inventory _inv;

	void OnEnable(){
	
		_inv = (Inventory)target;
	
	}

	public override void OnInspectorGUI (){
	
		for (int i = 0; i < _inv.hiddenObject.wave; i++){

			_inv.hiddenObject.enemyCount  <em>= EditorGUILayout.IntField (_inv.hiddenObject.enemyCount*);*</em>

for (int a = 0; a < _inv.hiddenObject.enemyCount*; a++){*

* _inv.hiddenObject.enemy [i, a] = (GameObject)EditorGUILayout.ObjectField (_inv.hiddenObject.enemy[i,a],typeof(GameObject));*

* }*

* }*

* if (GUILayout.Button(“Add Wave”)){*

* _inv.hiddenObject.wave ++;*

* }*

* EditorUtility.SetDirty (inv);*
}
}_

im still getting the same result, if i tried to play the game, the object field goes blank (null)
sorry if there was so many question like this, i was so frustated … @_@
btw when i tried to use non multidimensional array for enemy, it was normal …
but i dont wanna use non dimensional array for an enemy

The problem is that you are not serializing any of your changes (i.e. saving them to disk). There are a number of ways you can approach custom inspectors, but the most bulletproof is to use SerializedProperty. For example:

using UnityEditor;
using UnityEngine;

[CustomEditor (typeof (Inventory))]
public class InventoryEditor : Editor {
    private SerializedProperty m_HiddenObject;

    protected virtual void OnEnable () {
        m_HiddenObject = this.serializedObject.FindProperty ("hiddenObject");
    }
    public override void OnInspectorGUI ()
    {
        this.serializedObject.Update ();
        // your stuff here
        this.serializedObject.ApplyModifiedProperties ();
    }
}