objectToUndo | 对要修改对象的引用。 |
name | 要在撤消历史记录中显示(即在撤销菜单中可见)的操作的名称。 |
记录执行 RecordObject 函数之后对对象所做的任何更改。
使用这一函数可以记录几乎所有属性更改。无法使用这一函数记录变换组件的父项、AddComponent 和对象销毁,应该使用专用函数来记录。
这一操作将在内部创建一份临时的对象状态,并且,Unity 会在帧的末尾对状态加以区分,从而检测实际进行了哪些更改。更改过的属性随后会记录在撤销堆栈上。如果实际上未进行任何更改(对所有属性都进行二进制精确比较),则不会在堆栈上存储任何撤销操作。
下面是一个编辑器脚本的示例,可用于更改特效的半径变量。系统会记录撤销状态,这样您就可以使用撤销系统来恢复更改。
//Name this script "EffectRadiusEditor"
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(EffectRadius))]
public class EffectRadiusEditor : Editor
{
public void OnSceneGUI()
{
EffectRadius t = (target as EffectRadius);
EditorGUI.BeginChangeCheck();
float areaOfEffect = Handles.RadiusHandle(Quaternion.identity, t.transform.position, t.areaOfEffect);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(target, "Changed Area Of Effect");
t.areaOfEffect = areaOfEffect;
}
}
}
将以下脚本放在游戏对象上,查看效果范围句柄,并在场景视图中使用辅助图标来更改相应值。
//Name this script "EffectRadius"
using UnityEngine;
using System.Collections;
public class EffectRadius : MonoBehaviour {
public float areaOfEffect = 1;
}