반응형

데이터를 직접 호출하는 방법이 존재하는데, 이방법은 아래 코드와 같이 직접 파일을 읽어오는 방식으로
코딩을 해볼 수 있다. 하지만 유니티의 경우 어셋번들이라는 개념이 존재한다. 

FileStream fs;
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);

if (fs != null)
{
    BinaryReader reader = new BinaryReader(fs);

어셋번들 방법을 적용하기 위해서는 왠지 Resource.Load()라는 함수를 통해서 리소스를 읽어와야 할듯 싶다. 
그래서 다시 아래와 같은 코드 방식으로 바꾸어 봤다.
TextAsset asset = Resources.Load("enemy_seq_bin") as TextAsset;
Stream s = new MemoryStream(asset.bytes);
BinaryReader br = new BinaryReader(s);
하지만 유니티에서 제공되는 TextAsset 데이타 방식은 xml, html, htm. xml, bytes 라는 데이터들인데
여기서 이미지 같은 바이너리는 파일의 확장자는 TextAsset.bytes를 통해 데이터를 읽어 올 수 있는 듯하다.
//Load texture from disk
TextAsset bindata= Resources.Load("Texture") as TextAsset;
Texture2D tex = new Texture2D(1,1);
tex.LoadImage(bindata.bytes); 
그래서 위와 같은 코드로 작성이 되어야 바이너리 파일을 읽을 수 있어 보인다. 

실제로 C++이나 ObjectC로 개발한 툴을 통해 나온 데이터들은 바이너리로 저장되어 있는데,
유니티를 사용할 때는 될 수 있으면 텍스트로 저장되고 읽혀져야 하는 듯싶다. 

인터넷에서 어떤 유니티 사용자가 남긴 글중에는 바이너리 데이터를 유니티에서 읽어보니 오히려 속도가
더 느려졌다는 글도 있었다. 아마도 유니티 번들 데이터는 압호화된 압축데이터 일듯한데,
바이너리보다는 텍스트로 된 데이터 접근이 속도가 더 빠른가 보다. 

이렇게 해서 기존에 구조체형태의 데이터 저장 방식에서 각각의 데이터를 xml 이나 텍스트로 구분 문자를
넣어 저장해야 하는 번거로움이 생기었다. 




반응형

+ Recent posts