版本:Unity 6 (6000.0)
语言英语
  • C#

PrefabUtility.RemoveUnusedOverrides

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会仔细阅读来自用户的建议,并在需要时进行更新。

关闭

提交失败

由于某种原因,您的建议更改未能提交。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void RemoveUnusedOverrides(GameObject[] prefabInstances, InteractionMode action);

参数

prefabInstances 要从中移除未使用覆盖的预制实例列表。
action UserAction 将记录取消并把结果写入 Editor 日志文件。

描述

此方法识别并从预制实例根列表中移除所有未用覆盖。有关更多详细信息,请参阅手册 未使用覆盖

using System.IO;
using UnityEngine;
using UnityEditor;

public class RemoveUnusedOverridesExample { // Creates a new menu item 'Examples > Remove Unused Overrides Example' in the main menu. [MenuItem("Examples/Remove Unused Overrides Example")] static void RemoveUnusedOverrides() { var exampleGameObject = new GameObject("Example", typeof(BoxCollider));

// Create folder Prefabs and set the path as within the Prefabs folder, // and name it as the GameObject's name with the .Prefab format if (!Directory.Exists("Assets/Prefabs")) AssetDatabase.CreateFolder("Assets", "Prefabs"); string localPath = "Assets/Prefabs/" + exampleGameObject.name + ".prefab";

// Make sure the file name is unique, in case an existing Prefab has the same name. localPath = AssetDatabase.GenerateUniqueAssetPath(localPath);

// Create the new Prefab and log whether Prefab was saved successfully. var prefabAsset = PrefabUtility.SaveAsPrefabAssetAndConnect(exampleGameObject, localPath, InteractionMode.UserAction, out bool prefabSuccess);

//Set a value on the example script and record it exampleGameObject.GetComponent<BoxCollider>().center = new Vector3(2.0f, 2.0f, 2.0f); PrefabUtility.RecordPrefabInstancePropertyModifications(exampleGameObject.GetComponent<BoxCollider>());

//Remove the component from the prefab asset. We now have an unused override. PrefabUtility.ApplyRemovedComponent(exampleGameObject, prefabAsset.GetComponent(typeof(BoxCollider)), InteractionMode.UserAction);

//Remove the unused override that was created earlier PrefabUtility.RemoveUnusedOverrides(new [] { exampleGameObject }, InteractionMode.UserAction); } }