Well I wouldn't be surprised if you would find some custom solution in the asset store among editor tools, but I haven't looked for it. I don't have a tutorial for you. But I once implemented a very simple undo system for a non Unity web app in JS. It shouldn't make much of a difference in CS and Unity though: - In your editor window create an array or better a list with a certain size (e.g. 50), which will be how many undo steps your undo stack will have. - Have some kind of data object, which might just be a KeyValuePair<string, object> (key = name of the property, value = old value of the property before a change happens), or something more complicated if you would want to store several property changes in one undo step (which I think is possible in Unity's undo system). If we are talking about several materials in your case the data object would also need to store a reference to the actual material, or you might include some kind of path structure in the key (e.g. key = "nameOfYourMaterial/nameOfTheChangedProperty"), which you would need to parse again when undoing. There are a billion of ways how you could structure this. - Have a function – that gets triggered before you change a property – to store the property's old value in a new data object and push it onto your undo stack (if it is already full, old entries will get removed at the end). -> Then perform the actual property value change. - Have a Unity menu entry/button in the scene view/button in your editor window or whatever that triggers the undo operation. Interpret your last data object on the stack, apply the corresponding old property value to the referenced material and afterwards remove the data object from the undo stack. Further possible extensions: - Additionally have a redo stack that gets filled with data objects when performing an undo operation. - Create a Unity menu for your undo system to undo/redo also with certain keyboard shortcuts (using CTRL/CMD + Z is probably not the best idea). - Extend your data object with a descriptive string that explains what property was changed or whatever you want and show the latest description in your menu.