PrefabUtility.LoadPrefabContents

public static GameObject LoadPrefabContents (string assetPath);
参数:要加载其内容的预制件资源的路径。
将给定路径上的预制件资源加载到孤立场景中,并返回预制件的根游戏对象。
可以使用它来获取预制件的内容并直接予以修改,而不是遍历预制件的实例。这可用于批处理操作。
一旦修改了预制件资源就必须调用SaveAsPrefabAsset来写它,然后调用UnloadPrefabContents从内存中释放预制件和孤立的场景。

例子:对预制件设置缩放值
[MenuItem("Examples/SetLocalScale to Prefab Asset")]
    static void SetLocalScale()
    {
        //获取指定目录下指定扩展名的所有文件
        string[] prefabFileArr = Directory.GetFiles("Assets/Prefabs/PrefabUtilityExample", "*.*", SearchOption.AllDirectories).Where(name => Path.GetExtension(name).ToLower() == ".prefab").ToArray();

        EditorApplication.update = delegate
        {
            for (int i = 0; i < prefabFileArr.Length; i++)
            {
                GameObject contentsRoot = PrefabUtility.LoadPrefabContents(prefabFileArr[i]);

                // Modify Prefab contents.
                contentsRoot.AddComponent<BoxCollider>();
                var contentRootTF = contentsRoot.transform;
                contentRootTF.localScale = (i + 2) * Vector3.one;

                PrefabUtility.SaveAsPrefabAsset(contentsRoot, prefabFileArr[i]);
                PrefabUtility.UnloadPrefabContents(contentsRoot);
            }

            EditorApplication.update = null;
        };
    }




游戏对象中的引用的预制件大小也进行了更改