unity scriptableobject vs singleton