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

京公网安备 11010502036488号