Fix : 에디터 UI 동적 리빌드 시 PropertyField 바인딩 누락 수정 및 삭제 확인 팝업 제거

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
user 2026-02-24 00:05:06 +09:00
parent 802bea169d
commit e9739076b0
4 changed files with 32 additions and 51 deletions

View File

@ -91,6 +91,8 @@ public class AvatarOutfitControllerEditor : Editor
{
avatarsContainer.Add(CreateAvatarElement(i));
}
avatarsContainer.Bind(serializedObject);
}
private VisualElement CreateAvatarElement(int avatarIndex)
@ -264,16 +266,11 @@ public class AvatarOutfitControllerEditor : Editor
private void DeleteAvatar(int index)
{
var avatar = controller.avatars[index];
if (EditorUtility.DisplayDialog("아바타 삭제",
$"아바타 '{avatar.avatarName}'을(를) 삭제하시겠습니까?", "삭제", "취소"))
{
Undo.RecordObject(target, "Delete Avatar");
controller.avatars.RemoveAt(index);
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildAvatarList();
}
Undo.RecordObject(target, "Delete Avatar");
controller.avatars.RemoveAt(index);
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildAvatarList();
}
private void SwapAvatars(int a, int b)
@ -301,18 +298,13 @@ public class AvatarOutfitControllerEditor : Editor
private void DeleteOutfit(int avatarIndex, int outfitIndex)
{
var outfit = controller.avatars[avatarIndex].outfits[outfitIndex];
if (EditorUtility.DisplayDialog("의상 삭제",
$"의상 '{outfit.outfitName}'을(를) 삭제하시겠습니까?", "삭제", "취소"))
{
Undo.RecordObject(target, "Delete Outfit");
var outfits = new List<AvatarOutfitController.OutfitData>(controller.avatars[avatarIndex].outfits);
outfits.RemoveAt(outfitIndex);
controller.avatars[avatarIndex].outfits = outfits.ToArray();
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildAvatarList();
}
Undo.RecordObject(target, "Delete Outfit");
var outfits = new List<AvatarOutfitController.OutfitData>(controller.avatars[avatarIndex].outfits);
outfits.RemoveAt(outfitIndex);
controller.avatars[avatarIndex].outfits = outfits.ToArray();
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildAvatarList();
}
#endregion

View File

@ -319,15 +319,10 @@ public class CameraManagerEditor : Editor
private void DeletePreset(int index)
{
var preset = manager.cameraPresets[index];
if (EditorUtility.DisplayDialog("프리셋 삭제",
$"프리셋 '{preset.presetName}'을(를) 삭제하시겠습니까?", "삭제", "취소"))
{
Undo.RecordObject(target, "Delete Camera Preset");
manager.cameraPresets.RemoveAt(index);
EditorUtility.SetDirty(target);
RebuildPresetList();
}
Undo.RecordObject(target, "Delete Camera Preset");
manager.cameraPresets.RemoveAt(index);
EditorUtility.SetDirty(target);
RebuildPresetList();
}
private void SwapPresets(int a, int b)

View File

@ -85,6 +85,8 @@ public class EventControllerEditor : Editor
{
eventsContainer.Add(CreateEventGroupElement(i));
}
eventsContainer.Bind(serializedObject);
}
private VisualElement CreateEventGroupElement(int index)
@ -156,16 +158,11 @@ public class EventControllerEditor : Editor
private void DeleteEvent(int index)
{
var group = controller.eventGroups[index];
if (EditorUtility.DisplayDialog("이벤트 삭제",
$"이벤트 '{group.groupName}'을(를) 삭제하시겠습니까?", "삭제", "취소"))
{
Undo.RecordObject(target, "Delete Event Group");
controller.eventGroups.RemoveAt(index);
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildEventList();
}
Undo.RecordObject(target, "Delete Event Group");
controller.eventGroups.RemoveAt(index);
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildEventList();
}
private void SwapEvents(int a, int b)

View File

@ -87,6 +87,8 @@ public class ItemControllerEditor : Editor
{
itemsContainer.Add(CreateItemGroupElement(i));
}
itemsContainer.Bind(serializedObject);
}
private VisualElement CreateItemGroupElement(int index)
@ -167,16 +169,11 @@ public class ItemControllerEditor : Editor
private void DeleteItem(int index)
{
var group = controller.itemGroups[index];
if (EditorUtility.DisplayDialog("그룹 삭제",
$"그룹 '{group.groupName}'을(를) 삭제하시겠습니까?", "삭제", "취소"))
{
Undo.RecordObject(target, "Delete Item Group");
controller.itemGroups.RemoveAt(index);
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildItemList();
}
Undo.RecordObject(target, "Delete Item Group");
controller.itemGroups.RemoveAt(index);
EditorUtility.SetDirty(target);
serializedObject.Update();
RebuildItemList();
}
private void SwapItems(int a, int b)