Visible, Edit의 차이? 왜 이렇게 쓸까
언리얼 코드를 짜다보면 UPROPERTY뒤 ( ) 사이에 쓰는 키워드들을 본 적이 있을 것입니다.
여기서 Visible과 Edit의 차이를 궁금해서 찾다가 알아낸 사실을 기록하려고 합니다.
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent *Body;
UPROPERTY(EditAnywhere,Category=IDtest)
int32 ID;
언뜻봐서는 직관적으로 Visible은 언리얼에디터에서 수정이 불가능하겠지? Edit은 수정이 가능한것이겠지? 라고 생각했었습니다.
그러나 위 코드처럼 Body와 ID를 만들었을때 충격적이게도 Body에 속하는 속성들을 언리얼 상에서 수정이 가능하였고 ID또한 수정이 가능하였습니다.
그러나
UPROPERTY(EditAnywhere)
UStaticMeshComponent *Body;
이렇게 작성했을경우 Body의 속성을 언리얼에디터에서 수정이 불가능하였습니다. 도대체 어떤 차이일까?
확인해본 결과 객체에 visible을 사용했을 경우 객체일 경우 오브젝트 안의 속성들을 언리얼에디터에서 수정이 가능하지만 edit을 사용했을때는 객체의 레퍼런스 자체를 변경하는 옵션이(staticmesh에서 다른 컴포넌트로 한다던지…) 언리얼 에디터상에서 나타나고 오브젝트 안의 속성들을 수정할수없었다.
즉 왠만해서는 객체에는 visible을 쓰는게 맞을것 같고 int32 ID같은 일반적인 자료형의 경우에는 수정을 원할때만 Edit 키워드를 쓰면 될 것 같다.
이것은 visible과 edit뒤에 붙는 키워드 3개인 DefaultsOnly, InstanceOnly, Anywhere 세개와의 조합을 표로 나타낸 것입니다.
해당 표는 https://darkcatgame.tistory.com/62 해당 블로그에서 잘 정리해뒀기에 인용하였습니다.
#이 기능은 언리얼 오브젝트라는 특별한 객체에만 사용 가능.
'언리얼엔진' 카테고리의 다른 글
언리얼에서 로그 찍기 (0) | 2022.09.09 |
---|---|
액터(Actor) 기초 (0) | 2022.09.09 |
Mobility(모빌리티) 세팅 (0) | 2022.09.01 |
언리얼에서 TSubClassof< >는 무엇일까? 그냥 포인터와의 차이 (2) | 2022.08.01 |
맵 구성의 기본 ( 레벨(맵) 생성, 하늘, 태양, 대기 ) (0) | 2022.07.21 |