인프런 커뮤니티 질문&답변

Jay Jae님의 프로필 이미지
Jay Jae

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

FieldIterator 질문입니다

해결된 질문

작성

·

64

0

CharacterStatWidget 클래스에서 TFieldIterator 사용에 관한 질문입니다

 

TFieldIterator 말고도 다른 Iterator가 존재하고, 여기에서는 이 상황에 맞는 Iterator를 사용해야 하기에 FieldIterator를 사용한 것인지 궁금해서 검색해봤더니, 언리얼 엔진에서의 반복자는 항상 ObjectIterator과 ActorIterator 이 2가지만 언급하더라구요.

 

ObjectIterator는 UObject를 상속받은 클래스들에 대해 순회하는 반복자

ActorIterator는 Actor(레벨에 배치된 UObject)를 상속받은 클래스들에 대해 순회하는 반복자

검색 결과에서는 항상 이렇게 설명하던데

그럼 이와 마찬가지로 FieldIterator는 Ustruct에 등록된 프로퍼티/함수들에 대해 순회하는 반복자로 이해하면 되는 것일까요?

 

그리고 FieldIterator도 위의 오브젝터와 액터 반복자와 마찬가지로

FFieldIterator는 타입을 특정하지 않고 모든 구조체의 프로퍼티/함수들을 순회하는거고

TFieldIterator는 타입을 지정하여 구조체 내의 프로퍼티/함수들을 순회하는 거라고 보면 되는걸까요?

 

아니면 FieldIterator는 FFieldIterator는 없고 오직 TFieldIterator만 있는 건가요?

 

그리고 위 스크린샷에서

TFieldIterator<FNumericProperty> PropIt(FABCharacterStat::StaticStruct())

이 부분을 TFieldIterator로 FNumericProperty타입을 지정하여, ABCharacterStat 구조체에서 FNumericProperty타입을 지정하여 순회한다로 이해하면 되나요?

그런데 ABCharacterStat 구조체에는 FNumericProperty 타입의 변수가 없는데 왜 타입을 FNumericProperty로 지정한 것인지요...?

그리고 FNumericProperty가 있으면 그럼 TNumericProperty라는 것도 있는건가요? 아니면 이건 반복자가 아니기 때문에 TNumericProperty라는건 존재하지 않는건가요?

복습하면 할수록 질문이 질문에 꼬리를 잇게되네요...

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

안녕하세요.
상세한 내용까지 답변드리기는 좀 어려운게, 사실 소스코드에 모든 답이 있습니다.
Ctrl+Shift+F키로 전체 검색을 진행하면 몇 가지는 원하는 답을 찾을 수 있을겁니다.
단 어떤 규칙이 있다고 해서 모든 곳에 그 규칙이 적용된다, 예를 들면 ActorIterator가 있다고 다른 타입에 대해 Iterator가 항상 존재하는 것은 아닙니다.

0

안녕하세요, 인프런 AI 인턴입니다. Jay Jae님.

TFieldIterator와 관련하여 여러 가지 궁금한 점이 있으신 것 같습니다. 이와 유사한 질문에 대해 지식공유자님이 이미 답변한 내용들이 있어, 해당 내용을 공유해드리려고 합니다.

먼저 FieldIterator가 무엇이고 어떻게 사용하는지에 관해서는 다음 링크를 참고하시면 도움이 될 것 같습니다:

위 링크에서는 언리얼 엔진의 여러 프로퍼티들과 관련된 구조 및 사용법에 대해 상세히 설명하고 있습니다. 이를 통해 FieldIterator의 역할과 목적을 이해하실 수 있을 것입니다.

또한, 반복자의 다양한 사용 방법과 상황에 대한 이해를 돕기 위한 질문과 답변입니다:

해당 질문에서도 언리얼 엔진에서의 반복자 사용과 관련된 여러 가지 문제와 해결책이 논의되고 있습니다.

요약 설명:
- FieldIterator는 언리얼 엔진에서 구조체 내의 프로퍼티들을 순회할 때 사용됩니다.
- ObjectIterator와 ActorIterator와 마찬가지로 특정 유형 (여기서는 UStruct)에 등록된 프로퍼티들을 순회하는 반복자로 이해하면 됩니다.
- TFieldIterator와 FFieldIterator의 차이는 타입 지정을 통해 특정 유형의 프로퍼티들만을 대상으로 반복을 수행할 수 있다는 점입니다.
- TFieldIterator<FNumericProperty> PropIt(FABCharacterStat::StaticStruct());는 FABCharacterStat 구조체 내에서 FNumericProperty 타입의 프로퍼티들을 순회하는 예제입니다.

이와 같은 정보를 통해 FieldIterator의 이해에 도움이 되셨길 바랍니다. 더 상세한 내용은 링크된 답변들을 참고하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Jay Jae님의 프로필 이미지
Jay Jae

작성한 질문수

질문하기