Параметры
targetObject | Объект для обработки. |
Описание
Вызывает запись изменений, внесенных в экземпляр Prefab.
Обратите внимание, что рекомендуемый способ включения экземпляров префабов для записи изменений — использование SerializedProperty и SerializedObject. Это позволяет экземплярам записывать изменения и автоматически включать изменения в систему отмены.
Вызовите этот метод после внесения изменений в экземпляр префаба, чтобы записать эти изменения в экземпляре. Если этот метод не вызывается, изменения, внесенные в экземпляр, теряются. Обратите внимание, что если вы не используете SerializedProperty/SerializedObject, изменения объекта не записываются в систему отмены независимо от того, вызывается ли этот метод.
Смотрите так же: SerializedObjectSerializedProperty.
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
// Следующий скрипт Editor удваивает масштаб выбранного GameObject,
// записывает изменение свойства и помечает Scene как грязную, чтобы
// пользователь может впоследствии сохранить Scene и сохранить изменения.
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 HierarchyGameObject selection.
[MenuItem("Examples/Double Scale", true)]
static bool ValidateDoubleScale()
{
return Selection.activeGameObject != null && !EditorUtility.IsPersistent(Selection.activeGameObject);
}
}