Post

Unreal I/O

Unreal I/O

이야기

언리얼에서 파일 입출력은 비록 기본 언어가 c++이긴 하지만 언리얼에서 래핑한 헬퍼를 사용한다. 유니티에서는 c#으로 직접 했었는데, 언리얼은 대부분의 c++기능들이 언리얼에서 래핑되어 있다. 회사 프로젝트에서 config파일이나 replay파일들을 저장하거나 로드할 때, 파일 입출력이 필요하였고, 그에 따라 몇 가지 자주 쓰는 기능들을 모아봤다.

FPath

FPath는 게임이나 엔진의 경로들을 사용할 수 있게 해주는 헬퍼 클래스이다.

1
2
3
4
 	UE_LOG(LogTemp, Warning, TEXT("RootDir: %s"), *FPaths::RootDir());
	UE_LOG(LogTemp, Warning, TEXT("ProjectDir: %s"), *FPaths::ProjectDir());
	UE_LOG(LogTemp, Warning, TEXT("EngineSavedDir: %s"), *FPaths::EngineSavedDir());
	UE_LOG(LogTemp, Warning, TEXT("ProjectSavedDir: %s"), *FPaths::ProjectSavedDir());

이것 말고도 확장자 구하기 등 여러 기능들이 있다. 언리얼에서 출력해보면 에디터와 패키징된 게임에서 다른 패스를 출력한다.

Untitled

이것은 엔진에서 출력한 것인데, 예상대로 RootDir은 엔진의 디렉토리를, ProjectDir은 프로젝트의 디렉토리를 출력한다. 이때, FPaths::ConvertRelativePathToFull을 사용하면 풀 패스로 반환해준다.

Untitled

이것은 패키징된 게임에서의 출력이다. 엔진에서와는 다르게 RoodDir을 프로그램 폴더 자체를 가리키고, ProjectDir은 그 안에 프로젝트 이름으로된 폴더를 가리킨다. 그때 그때 잘 판단해서 사용하면 될 것 같다.

IPlatformFile

FPaths와 마찬가지로 언리얼에서 래핑한 I/O Interface이다. 기본적으로

1
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();

이렇게 PlatformFile을 참조해 사용하면 된다. 주로 디렉토리들을 다루고 파일이 있는지 없는지 확인하거나 디렉토리를 만들 때 사용한다.

FFileHelper

FFileHelper는 파일을 열거나 저장할 때 사용하는 헬퍼 클래스이다. 바이트 배열로 읽고 저장하기 때문에 문자열로 된 파일을 다룰 때 편리한 듯 하다.

(업데이트 중… )

This post is licensed under CC BY 4.0 by the author.