언리얼 Document를 보다보면 아키타입이라는 말이 자주 나오는데 구글링을 해도 많은 자료가 나오진 않아서 오늘은 아키타입이란 무엇인지 알아보고자 한다. 일단 사전에 Archetype의 단어 뜻에 대해 검색해보았다. 우리나라말로는 "전형"이라고 떠서 의미가 확 와닿진 않았는데 영어 해석을 보면 "A perfect example of something"이라고 쓰여져있다. 무언가의 틀? 원형?과 같은 의미로 쓰이는 것 같다. 언리얼에서 Archetype에 대해 정의한 문서는 존재하지 않았지만, 이 아키타입이라는 말이 제일 많이 나오는 부분인 UPROPERTY의 속성 지정자에 대한 Documents를 통해 단서를 얻을 수 있었다.
- EditAnywhere : 에디터 내의 속성 창, 아키타입 및 인스턴스를 통해 이 속성을 편집할 수 있음을 나타냅니다.
- EditInstanceOnly : 속성 창에서 이 속성을 편집할 수 있지만 아키타입이 아닌 인스턴스에서만 편집할 수 있음을 나타냅니다.
- EditDefaultsOnly : 속성 창에서 이 속성을 편집할 수 있지만 아키타입이에서만 편집할 수 있음을 나타냅니다. 이 연산자는 Visible* 지정자와 호환되지 않습니다.
- VisibleAnywhere : 이 속성이 모든 속성 창에 표시되지만 편집할 수 없음을 나타냅니다.
- VisibleInstanceOnly : 이 속성은 아키타입이 아닌 인스턴스의 속성 창에만 표시되며 편집할 수 없음을 나타냅니다.
- VisibleDefaultsOnly: 이 속성은 아키타입의 인스턴스의 속성 창에만 표시되며 편집할 수 없음을 나타냅니다.
위의 설명들을 유심히 읽어보면 '속성 창'은 '아키타입'과 '아키타입이 아닌 인스턴스' 이렇게 둘로 나뉘어진다. 그리고 아키타입이 아닌 인스턴스는 Instance로 표기되고 아키타입은 Defaults로 표기된다. C++에서는 오브젝트의 원형을 코드에서만 정의하기 때문에 의미가 잘 와닿지 않았던 것인데, 블루프린트를 사용하면 이 '원형'을 에디터에서 볼 수 있다. 그리고 이 원형을 실제 맵에 배치한 것이 인스턴스이다. 이를 이해하기 쉽게 보여주고 증명하기 위해 한 가지 테스트를 진행했다.
간단히 설명하자면 빨간색의 아키타입들은 내가 만든 C++클래스인 MyMonster에서 파생한 블루프린트 클래스이고 이를 각각 맵에 배치한것이 파란색의 인스턴스들이다. 코드에서 이들이 소유하고 있는 변수 두개를 각각 인스턴스/아키타입 에서만 볼수있게 지정자를 변경해보았다.
private:
UPROPERTY(VisibleInstanceOnly, BlueprintReadOnly, Category = Attack, Meta = (AllowPrivateAccess = true))
float AttackRange;//인스턴스에서만 볼 수 있다.
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Attack, Meta = (AllowPrivateAccess = true))
float AttackRadius;//디폴트(아키타입)에서만 볼 수 있다.
AttackRadius 변수는 VisibleDefaultOnly로 지정자를 변경했기 때문에 인스턴스의 디테일 패널에 나타나지 않는 모습을 볼 수 있다.
이번엔 블루프린트 안으로 들어가서 확인해보았다. 마찬가지로 Attack Range 변수는 VisibleInstanceOnly 로 지정자를 변경했기 때문에 블루프린트의 디테일 패널에 나타나지 않는다.
이를 통해 아키타입이 블루프린트 클래스를 뜻한다고 단정지을 수는 없지만 그래도 UPROPERTY에서의 Visible, Edit 지정자들의 의미에 대해 알게 되었기 때문에 궁금증 해결이었다!!
'UE4' 카테고리의 다른 글
[UE4] UIOnly InputMode에서 Key Input 허용하는 방법 (3) | 2023.03.31 |
---|---|
[UE4] MSB 3073 오류 해결법 (0) | 2023.03.29 |
[UE4] 인터페이스 (Interface) (0) | 2023.02.25 |
[UE4] 스마트 포인터 (Smart Pointer) (0) | 2023.02.24 |
[UE4] 언리얼 ui 최적화 기법 (4) | 2023.02.21 |