인스턴스의 변경을 대상 Prefab 에셋의 공유 기본값으로 올릴 때 Apply합니다. 한 인스턴스만 달라야 하면 override로 남깁니다.
인스턴스의 변경을 대상 Prefab 에셋의 공유 기본값으로 올릴 때 Apply합니다. 한 인스턴스만 달라야 하면 override로 남깁니다.

Prefab 에셋·Edit Mode 인스턴스·Play Mode를 먼저 구분합니다

씬의 Enemy_A에서 Health를 180으로 바꾸면 그 인스턴스에 property override가 생깁니다. Enemy_B와 Prefab 에셋은 120을 유지합니다. 반대로 Prefab 에셋을 200으로 바꿔도 이미 Health 220 override가 있는 Enemy_A는 220을 유지하고, override가 없는 Enemy_B만 200으로 바뀝니다. 어디를 수정했는지부터 구분해야 다른 인스턴스가 그대로인 이유가 보입니다.

using UnityEngine;

public sealed class EnemyHealth : MonoBehaviour
{
    [SerializeField] private int health = 120;
}

Apply와 Revert는 변경 방향이 반대입니다

Revert는 선택한 instance override를 현재 상속 원본 값으로 되돌립니다. 직접 재현에서는 Enemy_B의 90 override를 Revert하자 에셋 값 180으로 돌아왔습니다. Apply는 선택한 변경을 Overrides 창에 표시된 대상 Prefab 에셋이나 Variant에 반영합니다. Enemy_A의 180을 Apply하자 에셋과 override가 없던 Enemy_B도 180이 됐습니다.

Apply All은 한 속성만 고치는 명령이 아닙니다. 최외곽 Prefab 인스턴스의 property override, 추가·삭제 컴포넌트, 추가 자식까지 함께 반영할 수 있습니다. Overrides 목록에서 항목과 대상 에셋 이름을 보고, 개별 Apply나 Apply Selected로 충분한지 먼저 확인하세요.

초기값       Asset 120 · Enemy_A 120 · Enemy_B 120
로컬 변경    Asset 120 · Enemy_A 180 override · Enemy_B 120
Apply 뒤     Asset 180 · Enemy_A 180 · Enemy_B 180
에셋 변경    Asset 200 · Enemy_A 220 override · Enemy_B 200

Play Mode에서 바꾼 값은 종료하면 돌아갑니다

Play Mode에서 Inspector 값을 바꾼 것은 저장된 Prefab override가 아닙니다. 테스트에서는 Edit Mode의 220을 Play Mode에서 999로 바꿨고, 종료하자 220으로 복원됐습니다. 값을 남기려면 Play Mode를 끝낸 뒤 Edit Mode에서 다시 수정해야 합니다. 한 인스턴스만 달라야 하면 override로 남기고, 공유 기본값이어야 할 때만 대상 항목을 Apply하세요.

루트 Transform과 중첩 Prefab은 같은 규칙으로 보지 않습니다

Prefab 인스턴스 루트의 Position과 Rotation은 명시적인 instance override로 취급되지 않습니다. 위치를 3, 4, 5로 바꾼 뒤 Apply All을 실행해도 에셋 루트는 0, 0, 0을 유지했습니다. 중첩 Prefab과 Variant는 원본 계층이 여러 개입니다. 테스트에서도 바깥 EnemyWithWeapon.prefab, 내부 Weapon.prefab, Variant의 원본 Enemy.prefab이 서로 다른 경로로 확인됐습니다. Apply 전에 Overrides 창에 표시된 대상 이름을 확인하고, Variant만 달라야 할 값을 부모 Prefab까지 올리지 마세요.

검증 범위

직접 재현

검증일

검증 환경Unity 6000.5.3f1 · Windows 10 22H2 (10.0.19045) · empty project

빈 프로젝트에서 인스턴스 override와 에셋 값 우선순위, Apply·Revert, Play Mode 220→999→220 복원, 루트 Transform, 중첩 Prefab과 Variant의 서로 다른 원본 경로를 직접 재현했습니다. 선택 오브젝트의 전체 override를 밀어 넣던 기존 자동 Apply 코드는 삭제했습니다.