public static void Assemble() { var paths = Selection.objects.Select(obj => AssetDatabase.GetAssetPath(obj)); var directories = paths.Where(path => AssetDatabase.IsValidFolder(path)).ToArray(); var scripts = paths.Where(x => x.EndsWith("*.cs")) .Union( AssetDatabase.FindAssets("t:script", directories) .Select(guid => AssetDatabase.GUIDToAssetPath(guid))) .ToArray(); string assemblyPath; using (new LockReloadAssemblyScope()) using (new LockReloadAssetScope()) { var settings = BuildSettings.FindOrCreateInstance(); var composer = new Composer(settings); assemblyPath = composer.BuildScripts( scripts, Preference.GetAssemblyName(paths)); AssetDatabase.SaveAssets(); } EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath<Object>(assemblyPath)); }
public static void Disassemble() { var assemblyName = Path.GetFileNameWithoutExtension( AssetDatabase.GetAssetPath(Selection.activeObject)); string[] scriptPaths; using (new LockReloadAssemblyScope()) using (new LockReloadAssetScope()) { var settings = BuildSettings.FindOrCreateInstance(); var composer = new Composer(settings); scriptPaths = composer.RevertToScripts(settings, assemblyName); AssetDatabase.SaveAssets(); } if (scriptPaths.Length == 1) { EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath<Object>(scriptPaths[0])); } else { Selection.objects = scriptPaths.Select(x => AssetDatabase.LoadAssetAtPath<Object>(x)) .ToArray(); } }
public static void SelectSettingsObject() { Selection.activeObject = BuildSettings.FindOrCreateInstance(); }