+ 이 글은 작성자가 직접 공부하고 복습하며 작성한 글입니다. 만약 직접 작성하지 않았다면, 꼭 출처를 밝히겠습니다!
+ 이 글은 개인적인 공부를 바탕으로 작성되었기에, 틀린 부분이 있을 수 있으며, 틀린 부분이 있다면 알려주시면 감사하겠습니다!
+ 이 글을 다른 곳으로 가져가신다면, 꼭 출처를 남겨주세요~
+ '참고사이트'는 공부하기 위해 참고한 사이트들을 모아 둔 것입니다.
+ 혹시라도 문제가 된다면 바로 조취를 취할테니, 말해주시면 감사하겠습니다!
Unreal 공부를 하면서 FArchive와 FVariant에 대해서 알게되었는데, 이 부분에 관한 지식을 찾기위해 구글링을 해 본 결과, 제대로된 지식을 아직 못 얻었다...
뭔가 대충 느낌을 알거같긴한데...
그래서 그냥 개인 메모 형식으로 남겨둔다.
FArchive
Base class for archives that can be used for loading, saving, and garbage collecting in a byte order neutral way.
byte 순서 중립적인 방법(??? 무슨뜻인지 몰라서 직역하긴 했는데... 그냥 byte배열로 사용할 수 있는 건가??)으로 로딩, 저장, GC에 사용할 수 있는 기본 클래스.
FVariant
Implements an extensible union of multiple types.
Variant types can be used to store a range of different built-in types, as well as user defined types. The values are internally serialized into a byte array, which means that only FArchive serializable types are supported at this time.
다양한 타입의 확장 가능한 결합을 구현한다.
Variant타입은 다른 built-in type이나 유저가 정의한 타입 등 다양한 타입을 저장할 때 사용된다.
일반적으로 byte배열로 직렬화되는데, 사용할 수 있는 타입은 FArchive에서 직렬화할 수 있는 타입만 현재 가능하다.
FArchive의 상속 형태 (일부)
FArchive -> FMemoryArchive -> FMemoryWriter, FMemoryReader, FMemoryObject -> ...
... -> FMemoryWriter -> FBufferArchive(TArray를 상속)
FArchive -> FBufferReaderBase -> FBufferReader -> ...
FArchive -> FBufferWriter -> ...
FArchive -> FMemoryArchive -> ...
+ Unreal에서 Binary data를 표현할 때, 기본적으로 uint8의 동적 배열을 사용한다.
각 클래스의 멤버함수 데이터 형을 보면 대부분 uint8 / TArray<uint8>로 되어있는 것을 보면 알 수 있다.
+ FVariant를 사용하는 엔진 코드를 좀 보면, 여러 형태의 데이터를 직렬화해서 함수등으로 전달할 때 사용하고 있다.
+ 여러 자료를 찾아보거나 엔진 코드의 일부분을 봤을 때, 내가 느낀 사용법은,
FVariant와 FArchive는 둘 다 직렬화에 사용되는 Class인 것 같고,
FVariant는 데이터를 주고 받기 위해서 사용한다면,
FArchive는 데이터 저장, 즉 Hard Disk와 주고받기 위해 사용되는 개념인 듯 하다
어우... 진짜 파악하기 힘드네. 대체 어떻게 찾아 공부해야하는거야...? Unreal Docs에
예제 좀 넣어주면 어디 덧나나;;;;; 진짜 불편;;;
+ Unreal Wiki에 Rama라는 사람이 올린 Game Data Save/Load관련 글이 있는데... 이걸 보면 좀 느낌이 더 올지도!
근데 아직 실력이 부족해서 잘 못알아보겠다... 실력을 키우자 ㅠㅠ
-> https://wiki.unrealengine.com/Save_System,_Read_%26_Write_Any_Data_to_Compressed_Binary_Files
아직 공부가 너무 부족하다... 다른 엔진 코드를 확인하던지해서 공부하자 ㅠㅠ
혹시 잘 아시는 분이 있다면... 알려주시면 감사하겠습니다 ㅠㅠ
** 참고사이트 **
- https://docs.unrealengine.com/en-US/API/Runtime/Core/Misc/FVariant/index.html
- https://docs.unrealengine.com/en-US/API/Runtime/Core/Serialization/FArchive/index.html
- https://wiki.unrealengine.com/Save_System,_Read_%26_Write_Any_Data_to_Compressed_Binary_Files
Copyright © -강정이좋아- 무단 전재 및 재배포는 하지 말아주세요.
'요리 레시피 > Unreal' 카테고리의 다른 글
Widget관련 (UWidget, UUserWidget, UPanelWidget, WidgetTree) (0) | 2020.01.31 |
---|---|
TSoftClassPtr / TSubclassOf 에 대하여 (0) | 2020.01.23 |
[Unreal] GameMode / GameState (1) | 2019.12.23 |