Undo - mandatory for editor tools?

I’ve finished creating a tool for procedural generation of GameObjects. More than 100 sub-objects are created in an Array, and there are 45 editable parameters that will affect any/all of the instantiated objects.

I’ve read in the Asset Store submission guidelines: “Undo for all editor steps is mandatory.”

I’m in the process of studying the Undo docs now, but, is this the massive undertaking that it seems? Will I have to wrap every possible parametric change slider/toggle/field etc. in Undo code? And somehow manage this across an array of objects?

Sorry if this sounds like a vague question, but the docs are pretty sparse and I haven’t been able to find any other advice. I’m sure this is a complex issue, but could anyone outline any of the basic steps I would have to perform in order to comply.

Does anyone know if my own custom Undo button would comply with the guidelines? This might be a more efficient solution as I already know the state of everything at any point, so relatively easy to save this periodically.

Thanks for any insight, however small, I just can’t see where to start at the moment.

Unity will automatically handle undo if you use SerializedProperty (and I also recommend using PropertyField to show them)in your editor code.

However,I believe if you can sufficiently prove that an undo-button you’ve created will actually revert the state of any project to the previous state, you might be able to get your asset to the store. Sounds like a lot of work to me, so I recommend using SerializedProperty.