본문 바로가기
Unreal Engine 5

언리얼 엔진 - 블루프린트 변수가 자꾸 초기화된다? : Instance Editable 옵션

by 니키티스 2026. 1. 10.

위와 같이 자식 블루프린트 클래스를 만들어서 변수를 수정하는데, 어째 프로젝트를 재실행할 때마다 초기화된다.

자꾸 블루프린트로 만든 객체가 실행할 때마다 초기화된다.

이런 현상은 부모 블루프린트 클래스에서 만든 변수를 자식 블루프린트 클래스에서 수정할 때 발생했다.

위 사진에서는 BP_Weapon_Base를 상속받아 BP_Weapon_M1911을 생성했다. 여기서 Name, Mesh, Damge, Fire Delay, Range와 같은 변수를 부모인 BP_Weapon_Base에서 생성하고, 자식 클래스인 BP_Weapon_M1911에서 수정했다.

그런데 자꾸 계속 수정해도 다시 프로젝트를 실행하면 초기 상태로 되돌아갔다.

실제로 찾아보니 언리얼 Docs에서도 같은 문제를 겪는 사람이 많았다.
처음엔 단순 검색으로는 상당히 찾는 데에 오래 걸릴 거라 생각해서, Claude에다가 물어보았다. 그에 대한 답변은 이랬다.

 
1. 부모 클래스 변수 설정 문제
  • 자식 BP(BP_Weapon_M1911)에서 부모 클래스(BP_Weapon_Base)의 변수를 수정하면 부모가 컴파일될 때 초기화될 수 있습니다
  • 해결: 부모 클래스 변수의 "Instance Editable" 체크박스가 켜져 있는지 확인하고, 자식 클래스에서 "Class Defaults"에서 값을 설정하세요
 

위 사진에 나와 있는 데이터는 부모 클래스인 BP_Weapon_Base의 변수가 맞다.
확인해 보았더니, 블루프린트 변수에는 Instance Editable 체크박스가 존재했다.

이렇게 변수를 선택해 보면…
Detail 패널에서 Instance Editable 옵션을 볼 수 있다.

이렇게 블루프린트에서 변수를 선택하면 Detail 패널에서 'Instance Editable' 옵션을 볼 수 있었다.
여기서 해당 옵션을 활성화해야만 자식 클래스에서 변수를 변경할 수 있다.

조사해보니 해당 옵션은 C++의 BlueprintReadWrite 매크로와 유사한 역할을 하고 있었다.

언리얼 엔진 Docs(https://dev.epicgames.com/documentation/ko-kr/unreal-engine/blueprint-variables-in-unreal-engine)에 따르면, Instance Editable(인스턴스 편집 가능) 옵션은 "클래스 디폴트와 블루프린트 디테일 탭에서 변수 값을 편집할 수 있는지 여부를 설정"하는 데에 사용된다.

부모 클래스에서 변수의 디폴트 값은 0인데, 자식 클래스에서 '편집 가능 옵션(Instance Editable)'을 비활성화한 상태에서 값을 수정하니, 프로젝트를 실행할 때마다 값이 초기화되는 것이다.

이제 프로젝트를 껐다가 켜도 결과가 잘 남아 있다.

이 이외에도 부모 클래스와 자식 클래스 사이에 순환 참조가 있다던가, Class Defaults가 아닌 곳에서 값을 변경한다던가, .uasset 파일이 손상되었다던가, 소스 컨트롤 충돌로 인해 초기화된다던가 하는 이유가 있다고 하는데, 일단 이것만으로 해결되었으니 넘어가도록 하자.

댓글