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; }; }
游戏对象中的引用的预制件大小也进行了更改