모바일에서 Streaming Asset을 사용하려니 WWW 클래스를 이용한 비동기 처리 방식이라서 코드가 보기 안좋게 짜여지는 것도 있었고, 디렉토리 존재 여부 확인, 검색 기능 등이 없으니 불편했었다.


 더 나은 방법이 없을까 하다가, BetterStreamingAssets이라는 오픈소스에 대해서 알게되었다.(https://assetstore.unity.com/packages/tools/input-management/better-streaming-assets-103788)


1. BetterStreamingAssets란

 BetterStreamingAsset은 StreamingAsset 파일 처리를 더 쉽게 해주는 오픈소스로, MIT 라이센스로 제공되기 때문에 개발한 소프트웨어 내에 사용했다고 기록만 남겨주면 상용으로도 이용 가능하다.

 유니티 에디터의 에셋 스토어에서 Better Streaming Asset을 검색해서 Import하고, 폴더 내에서 README 파일을 보고 따라하면 되기때문에 이용하기는 쉽다.


2. 라이브러리 사용 방법

관련 함수들

static void BetterStreaminAssets.Initialize();

BetterStreamingAssets 라이브러리를 초기화한다.

메인 스레드 내에서 호출해야한다.


static bool DirectoryExists(string path);

path 디렉토리가 존재하는지 여부를 확인한다.


static string[] GetFiles(string path, string searchPattern, SearchOption searchOption);

path에서 searchPattern으로 이름을 가진 파일들을 얻어온다.

searchPattern은 파일 명을 이용할 수 있고, *.png 같은 형식도 이용할 수 있다.

searchOption은SearchOption.AllDirectories, SearchOption.TopDirectoryOnly 두가지를 이용 할 수 있다.

SearchOption.AllDirectoriess 옵션은 하위 디렉토리까지 모두 검색하고,

SearchOption.TopDirectoryOnly은 해당 디렉토리만 검색한다.


static string ReadAllText(string path);

파일 내용을 string 형식으로 모두 읽어온다.


static byte[] ReadAllBytes(string path);

파일 내용을 byte[] 형식으로 모두 읽어온다.

 모두 static 형식이기 때문에 BetterStreamingAssets.ReadAllText(...) 형식으로 호출하면 된다.


 BetterStreamingAsset을 이용하려면, 최초로 한번 초기화해주어야한다.

BetterStreaminAssets.Initialize();


 파일 리스트는 다음과 같이 얻어올 수 있다.

//모든 .xml 파일 리스트를 얻어옴

string[] paths = BetterStreamingAssets.GetFiles("\", "*.xml", SearchOption.AllDirectories);


 파일은 다음과 같이 읽을 수 있다. 이는 한글을 읽기 위해서 한글 인코딩으로 변환하는 과정을 포함한 것이다.

public string readFIle(string filename) { byte[] byteContents = BetterStreamingAssets.ReadAllBytes(filename); string contentsString = System.Text.Encoding.GetEncoding("euc-kr").GetString(byteContents);

return contentsString; }


호출 예제

readFile("WeaponDataSet/Weapon_001.csv");


 개인적으로 BetterStreamingAssets를 이용하는 방법이 WWW 클래스를 쓰는 것 보다 훨씬 편했다. 이래서 다들 오픈소스 쓰라고 하는가보다 싶었다.


 한글 인코딩 관련으로 또 문제가 있는데, 이 부분도 포스팅으로 다루었으니 링크로 첨부한다.

https://invincibletyphoon.tistory.com/49?category=816145

블로그 이미지

서기리보이

,