본문 바로가기
유니티 Unity/유니티 기능 구현

[유니티] 파일을 저장하거나 불러오는 방법 - System.IO.File

by TODAYCODE 2022. 1. 25.
반응형

유니티를 활용해서 프로젝트를 진행하다보면 어떤 정보를 어딘가에 저장하고 싶을 때가 있다.

이런 기능은 굉장히 빈번하게 쓰이다보니까 유니티에서 이미 기능을 마련해두었다.

 

순서는 다음과 같다.

1. using System.IO; 를 적어준다.

여기서 IO는 input과 output을 줄여쓴 것으로 유니티 상에서 입출력 기능을 사용하겠다는 뜻이다.

이렇게 되면 File이라는 클래스에 접근하여 다양한 기능들을 사용할 수 있다.

 

2. File 클래스 사용하기

위의 using을 적어줬다면 이제 스크립트 상에서 File이라고 적은 뒤 점(.)을 찍어주면 다양한 명령어들이 나타나는 것을 볼 수 있다.

해당 내용은 유니티의 공식 문서에서도 살펴볼 수 있다.

 

Unity - Scripting API: File

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

처음 해당 기능을 사용할 때는 4가지 메소드만 알아도 충분하다.

  • File.Exists(string path)

          입력된 경로에 파일이 존재하는지를 bool값으로 반환

  • File.Delete(string path)

          입력된 경로에 존재하는 해당 파일을 삭제

  • File.WriteAllText(string path, string contents)

          입력된 경로에 입력된 문자열 컨텐츠를 텍스트형태의 파일로 저장

  • File.ReadAllText(string path)

          입력된 경로에 존재하는 텍스트형태의 파일을 불러옴.

 

이 밖에도 ReadAllBytes 등도 존재하는데 별차이는 없고 바이트형태로 저장한다는 정도의 차이이다.

 

3. 경로의 설정

위의 메소드들의 공통점은 전부 path가 존재한다는 것인데

초보자의 경우는 이 path를 어떻게 설정해야 좋을지도 많은 고민이 될 수 있다.

이럴때 나는 무조건 Application.persistentDataPath 를 사용하라고 권장한다.

 

단순하게,

string path = Application.persistentDataPath;

이렇게 써서 경로를 생성한다음에 path를 사용해주면 된다.

해당 경로는 유니티가 기본적으로 생성하는 프로젝트별 폴더이므로,

PC환경이든 모바일환경이든 상관없이 가장 편하게 접근할수있는 경로이다.

 

다만, File의 메소드를 사용할 때 매개변수로 입력되는 path는 단순히 경로 뿐만아니라 저장될 파일의 이름까지 설정해줘야 관리하기가 편하다.

 

따라서 예를 들면,

string path = Application.persistentDataPath + "/";
string fileName = "SaveFile";

이런식으로 Application.persistentDataPath 뒤에다가 / 를 하나 더 추가해서 path 변수를 설정해주고

저장할 파일의 이름을 담당할 fileName 변수를 하나 생성해서 이름을 정해준 뒤

path + fileName 을 매개변수로 한번에 넣어주는 것이 좋다.

 

좀 더 체계적으로 관리하고 싶다면 데이터매니저 스크립트 같은 것을 별도로 만들어서

여러개의 파일을 분리하면서 각각 저장해주면 좀 더 효율적으로 사용할 수 있게 된다.

 

File 기능을 통해서 문자열만 외부에 저장할 수 있다고 생각하는 경우가 많은데,

문자 이외에도 사진이나 동영상도 저장할 수 있으며,

fileName 자체에 확장자명을 같이 넣어줘서 원하는 형식으로 저장할 수도 있다.

 

반응형

댓글