objectToUndo | 変更予定のオブジェクトへの参照。 |
name | Undo 履歴に表示されるアクション名 ( Undo メニュー内に表示されます) 。 |
RecordObject が呼び出された後の変更点を記録します
ほぼすべてのプロパティーの変更点はこの関数で記録することができます。しかし、Transform の親の変更、コンポーネントの追加、オブジェクトの破棄はこの関数で記録することができないので専用の関数を使用してください。
内部的にはオブジェクトの状態を一時的にコピーしフレームの最後で差分を取り、正確に何が変更されたかを検出します。変更されたプロパティーは Undo スタックに保持されます。もし変更点がなにもない場合(バイナリの正確な比較はすべてのプロパティーで行われます) Undo スタックには保持されません。
以下は EffectRadius 変数を変更するためのエディタースクリプトの例です。 Undo 状態は Undo システムを用いて変更を戻すことのできる recorded になっています。
//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; } } }
areaOfEffect の操作を見るために以下のスクリプトをゲームオブジェクトにアタッチし、シーンビューのギズモを用いて値を変更してください。
//Name this script "EffectRadius" using UnityEngine; using System.Collections;
public class EffectRadius : MonoBehaviour {
public float areaOfEffect = 1;
}