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

PrefabUtility.RecordPrefabInstancePropertyModifications

Declaration

public static void RecordPrefabInstancePropertyModifications(Object targetObject);

Параметры

Параметр Описание
targetObject Объект для обработки.

Описание

Приводит к записи изменений, внесенных в экземпляр Префаб.

Рекомендуемый способ разрешить экземплярам префабы записывать изменения — это использовать SerializedProperty и SerializedObjectвместо этого метода. Использование SerializedProperty и SerializedObject разрешает экземплярам записывать изменения и автоматически включает изменения в систему отмены.

Вызов RecordPrefabInstancePropertyModifications после модификации экземпляра Префаб для записи этих изменений в экземпляре. Если этот метод не вызван, изменения, сделанные в экземпляре, теряются и изменения в объекте не записываются в системе отмены.

Дополнительные ресурсы: SerializedObject SerializedProperty.

using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;

// The following Editor script doubles the scale of the selected GameObject, // records the property modification and marks the Scene as dirty so that // the user can save the Scene afterwards and keep the changes. public class Example { [MenuItem("Examples/Double Scale")] static void DoubleScale() { GameObject gameObject = Selection.activeGameObject; Undo.RecordObject(gameObject.transform, "Double scale"); gameObject.transform.localScale *= 2;

// Notice that if the call to RecordPrefabInstancePropertyModifications is not present, // all changes to scale will be lost when saving the Scene, and reopening the Scene // would revert the scale back to its previous value. PrefabUtility.RecordPrefabInstancePropertyModifications(gameObject.transform);

// Optional step in order to save the Scene changes permanently. //EditorSceneManager.SaveScene(SceneManager.GetActiveScene()); }

// Disable the menu item if there is no Hierarchy GameObject selection. [MenuItem("Examples/Double Scale", true)] static bool ValidateDoubleScale() { return Selection.activeGameObject != null && !EditorUtility.IsPersistent(Selection.activeGameObject); } }