Hi,
Yes, editing data at runtime will always have this behavior if you reload the gameObject, that's to be expected and this is a good thing, and that's why there is don't destroy on load feature.
to work properly with this, you need to do the following:
1: maintain a boolean global variable, for example "My array is up", false by default
2: on the gameObject that host your array, have a fsm that when starting check this "My Array is Up" is true, if it is true, then you destroy yourself right away, if false then you set that flag to true,
this way, each of your levels can have in their hierarchy this game object with this array, and when you load them during your game, they will manage themselves automatically.
Does that make sense?
That's a perfect example of very useful usage of global variables. you must have one global variable per gameObject of this kind of course, so name them properly and distinctly, because the down side of use global var is that every fsm can access it.
bye,
Jean