in 2.6, 3.04b, 3.0b5
you could do MyScriptableObjectClass m = new MyScriptableObjectClass([arguments]);
as long as the ScriptableObject class was in the Plugins (for compile order).
Now with 3.06b it be unhappy (constant warning error fills the consol even though it does work) and the warning says must use ScriptableObject.createInstance which would make quite a mess cuz you cant instantiate it with arguments and such…
But it did work and it solved several problems… (meaning it was used LOTS! and now all that code throws the million + warning statements)
One place it was extremely nice to have the “new MyScriptableObject” functionality was because any fields on a Monobehaviour you wish to edit using an Editor class must themselves be Monobehaviour or ScriptableObject or a small set UnityEngine types like string and int etc… (the editor script can read non UnityEngine Types fine, but the values are not set on the target by EditorUtility.SetDirty(target) because it only knows UnityEngine types?) - Meaning you HAVE TO USE ScriptableObject for rich data types :(, but at least it wasn’t a ugly when you could later use “new MyScriptableObject” syntax to create other instances of the data class
It would be very helpful if you know of a way to edit non UnityEngine type fields on a Monobehaviour with a Editor script?
hmmm… otherwise we are left to either find a way to turn off that warning (because “new myScriptableObjectClass” still works)
or we can sift code and replace all instances of
myScriptableObjectClass msoc = new myScriptableObjectClass([args]);