回答編集履歴
1
ItemObjectInspectorに変更記録処理を追加
test
CHANGED
@@ -54,6 +54,13 @@
|
|
54
54
|
|
55
55
|
Hoge myTarget = (Hoge)target;
|
56
56
|
|
57
|
+
// 変更記録用の処理を用意しておき...
|
58
|
+
void Record()
|
59
|
+
{
|
60
|
+
Undo.RecordObject(myTarget, "Inspector");
|
61
|
+
EditorUtility.SetDirty(myTarget);
|
62
|
+
}
|
63
|
+
|
57
64
|
if (myTarget.customHoge != null)
|
58
65
|
{
|
59
66
|
if (myTarget.hogeType == Hoge.HogeType.A)
|
@@ -61,11 +68,22 @@
|
|
61
68
|
if (myTarget.customHoge is CustomHogeA hoge)
|
62
69
|
{
|
63
70
|
EditorGUILayout.LabelField("CustomHogeA");
|
71
|
+
|
72
|
+
// customHogeの値を書き換えるときは、値が変更されているか確認して
|
73
|
+
// 変更されていればRecordを行ってから書き換えるようにしました
|
64
|
-
|
74
|
+
var newValue = EditorGUILayout.IntField("A1", hoge.hogeA1);
|
75
|
+
if (newValue != hoge.hogeA1)
|
76
|
+
{
|
77
|
+
Record();
|
78
|
+
hoge.hogeA1 = newValue;
|
79
|
+
}
|
65
80
|
}
|
66
81
|
else
|
67
82
|
{
|
68
83
|
Debug.Log("New CustomHogeA");
|
84
|
+
|
85
|
+
// customHoge自体を差し替えるときにもRecordを行いました
|
86
|
+
Record();
|
69
87
|
myTarget.customHoge = new CustomHogeA();
|
70
88
|
}
|
71
89
|
}
|
@@ -74,11 +92,21 @@
|
|
74
92
|
if (myTarget.customHoge is CustomHogeB hoge)
|
75
93
|
{
|
76
94
|
EditorGUILayout.LabelField("CustomHogeB");
|
95
|
+
|
96
|
+
// ここも同様の処置を行いました
|
77
|
-
|
97
|
+
var newValue = EditorGUILayout.FloatField("B1", hoge.hogeB1);
|
98
|
+
if (newValue != hoge.hogeB1)
|
99
|
+
{
|
100
|
+
Record();
|
101
|
+
hoge.hogeB1 = newValue;
|
102
|
+
}
|
78
103
|
}
|
79
104
|
else
|
80
105
|
{
|
81
106
|
Debug.Log("New CustomHogeB");
|
107
|
+
|
108
|
+
// ここも同様の処置を行いました
|
109
|
+
Record();
|
82
110
|
myTarget.customHoge = new CustomHogeB();
|
83
111
|
}
|
84
112
|
}
|
@@ -86,6 +114,9 @@
|
|
86
114
|
else
|
87
115
|
{
|
88
116
|
EditorGUILayout.LabelField("CustomHogeがない");
|
117
|
+
|
118
|
+
// ここも同様の処置を行いました
|
119
|
+
Record();
|
89
120
|
myTarget.customHoge = new CustomHoge();
|
90
121
|
}
|
91
122
|
|