static function ApplyPrefabsBuildCustoms() {
EditorApplication.NewScene();
var paths = FindPaths(["*.prefab"]);
for (var path in paths) {
var p = AssetDatabase.LoadMainAssetAtPath(path);
var obj = PrefabUtility.InstantiatePrefab(p) as GameObject;
var changed = false;
// do whatever you want with prefab instance
// ...
if (changed) PrefabUtility.ReplacePrefab(obj, p, ReplacePrefabOptions.Default);
GameObject.DestroyImmediate(obj);
}
}
static function FindPaths(filters: String[]): String[] {
var paths
= new List
.<String>(); for (var filter in filters) {
var files = Directory.GetFiles(Application.dataPath, filter, SearchOption.AllDirectories);
for(var f in files) {
paths.Add(NormalizeDataPath(f));
}
}
return paths.ToArray();
}
static function NormalizeDataPath(path: String) {
var normalizedPath = "Assets" + path.Replace(Application.dataPath, "").Replace('\\', '/');
return normalizedPath;
}