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

PrefabUtility.RecordPrefabInstancePropertyModifications

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static void RecordPrefabInstancePropertyModifications(Object targetObject);

参数

targetObject 要处理的对象。

描述

导致对预制实例进行的修改被记录。

请注意,启用预制实例记录更改的推荐方法是使用 SerializedProperty 和 SerializedObject。这使实例能够记录更改并自动将更改包含在撤消系统中。

在对预制实例进行修改后调用此方法以记录实例中的这些更改。如果不调用此方法,对实例进行的更改将会丢失。请注意,如果您未使用 SerializedProperty/SerializedObject,则无论是否调用此方法,对对象的更改都不会记录在撤消系统中。

其他资源: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); } }