Hello, I have been working on a editor extension that lets you create variants of ScriptableObjects and Materials like you do with prefabs. The values of the variants stay in sync with the values of their base, and changing a value of a variant will override it just like with prefabs.
Note that this is editor only just like prefabs. However it requires 0 bolierplate to work, just drop it in and you can make variants of any of your existing ScriptableObjects or Materials.
Demo
In this example “C” is a variant of “B” which is a variant of “A”. Changing a property on “A” will change the property on both “B” and “C” assume that neither override that property.

In the gif it may look bit janky as the values update but that is just because the properties don’t update until the next frame, it is actually quite solid so far.
Still To Do
-̶ ̶A̶p̶p̶l̶y̶:̶ ̶S̶t̶i̶l̶l̶ ̶n̶e̶e̶d̶ ̶t̶o̶ ̶a̶d̶d̶ ̶t̶h̶e̶ ̶"̶A̶p̶p̶l̶y̶"̶ ̶b̶e̶h̶a̶v̶i̶o̶r̶ ̶t̶o̶ ̶a̶p̶p̶l̶y̶ ̶a̶ ̶o̶v̶e̶r̶r̶i̶d̶d̶e̶n̶ ̶v̶a̶l̶u̶e̶ ̶t̶o̶ ̶t̶h̶e̶ ̶b̶a̶s̶e̶ ̶a̶s̶s̶e̶t̶.̶ :: Added
̶-̶ ̶P̶l̶a̶y̶M̶o̶d̶e̶:̶ ̶N̶e̶e̶d̶ ̶p̶r̶e̶v̶e̶n̶t̶ ̶t̶h̶e̶ ̶s̶y̶s̶t̶e̶m̶ ̶f̶r̶o̶m̶ ̶w̶o̶r̶k̶i̶n̶g̶ ̶i̶n̶ ̶p̶l̶a̶y̶m̶o̶d̶e̶ ̶a̶n̶d̶ ̶i̶n̶s̶t̶e̶a̶d̶ ̶c̶a̶c̶h̶e̶ ̶c̶h̶a̶n̶g̶e̶s̶ ̶t̶h̶a̶t̶ ̶h̶a̶p̶p̶e̶n̶ ̶i̶n̶ ̶a̶n̶d̶ ̶a̶p̶p̶l̶y̶ ̶t̶h̶e̶m̶ ̶a̶f̶t̶e̶r̶ ̶e̶x̶i̶t̶i̶n̶g̶ ̶s̶o̶ ̶t̶h̶a̶t̶ ̶a̶l̶l̶ ̶S̶O̶s̶ ̶b̶e̶h̶a̶v̶e̶ ̶t̶h̶e̶ ̶s̶a̶m̶e̶ ̶a̶s̶ ̶t̶h̶e̶y̶ ̶w̶o̶u̶l̶d̶ ̶i̶n̶ ̶a̶ ̶b̶u̶i̶l̶d̶.̶ - :: Added
- Tests: Since this deals with data and is a rather complex system I want to make sure that it is well tested as to not mess up anything. But so far it is seeming very stable. :: Partially Completed
- Odin Support: Odin is widely used especially for more data heavy projects, so I want to make sure that it is fully supported to provide the best experience. :: Almost Complete
- Ancestor Dropdown: Add a dropdown window to inspector for objects that mimics the new 2022 Material variant window. This lets you get a nice overview of what ScripableObjects inherit from which. :: Partially Completed
- Property Locking: Unity’s 2022 material variants have a nice feature of allowing locking of properties so they are not able to be affected. This seems like a nice feature to add and I have a number of ideas of how to implement it.
