반응형
데이터를 직접 호출하는 방법이 존재하는데, 이방법은 아래 코드와 같이 직접 파일을 읽어오는 방식으로
코딩을 해볼 수 있다. 하지만 유니티의 경우 어셋번들이라는 개념이 존재한다.
FileStream fs; fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); if (fs != null) { BinaryReader reader = new BinaryReader(fs);어셋번들 방법을 적용하기 위해서는 왠지 Resource.Load()라는 함수를 통해서 리소스를 읽어와야 할듯 싶다.
그래서 다시 아래와 같은 코드 방식으로 바꾸어 봤다.
하지만 유니티에서 제공되는 TextAsset 데이타 방식은 xml, html, htm. xml, bytes 라는 데이터들인데
여기서 이미지 같은 바이너리는 파일의 확장자는 TextAsset.bytes를 통해 데이터를 읽어 올 수 있는 듯하다.
그래서 위와 같은 코드로 작성이 되어야 바이너리 파일을 읽을 수 있어 보인다.
TextAsset asset = Resources.Load("enemy_seq_bin") as TextAsset; Stream s = new MemoryStream(asset.bytes); BinaryReader br = new BinaryReader(s);
여기서 이미지 같은 바이너리는 파일의 확장자는 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 이나 텍스트로 구분 문자를
넣어 저장해야 하는 번거로움이 생기었다.
넣어 저장해야 하는 번거로움이 생기었다.
참고 사이트 : http://answers.unity3d.com/questions/8187/how-can-i-read-binary-files-from-resources.html
http://docs.unity3d.com/Documentation/Components/class-TextAsset.html
반응형
'개발 Tip > Unity3D' 카테고리의 다른 글
Unity3D 4.0 으로 버전업 하면서 경고 메세지 중 하나! (0) | 2013.02.27 |
---|---|
Unity3D XML 읽고 쓰기 관련 정보 (0) | 2013.02.21 |
Unity3D에서 XML 읽고 쓰기 (0) | 2013.02.21 |
Unity3D 해상도 1:1 매칭을 위한 카메라 값 정하기 (0) | 2013.01.24 |
Windows에서 Android 개발 환경설정(Unity3D용) (5) | 2013.01.24 |