Unity 6.3
0 онлайн 0 гостей 3 в системе
Вход

PrefabUtility.RemoveUnusedOverrides

Declaration

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

Параметры

Параметр Описание
prefabInstances Список экземпляров Префаб для удаления неиспользуемых переопределений.
действия UserAction запишет отмену и запишет результат в журнал редактора.

Описание

Этот метод идентифицирует и удаляет все неиспользуемые переопределения из списка корней экземпляра Префаб. Подробнее см. в руководстве Unused Overides.

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); } }