[Unity] 빌드된 에셋번들을 까보자

유니티에서 빌드된 에셋번들 파일은 바이너리 형식이기 때문에 어떤 내용이 들어있는지 확인할 수가 없다.  여러가지 이유로 빌드된 에셋번들을 열어볼 필요가 있는 데, 게임 오브젝트 정보부터 쉐이더 정보까지 여러가지를 텍스트로 확인해 볼 수 있다. 

툴은 유니티가 설치된 폴더 하위에 Tools라는 폴더에 모두 있다. 

Windows:
C:\Program Files\Unity\Editor\Data\Tools
Mac OSX:
/Applications/Unity/Unity.app/Contents/Tools

두 가지 툴을 사용할 필요가 있는데, 윈도우 기준으로 WebExtract.exe와 binary2text.exe이다.  WebExtract.exe는 압축된 번들을 풀어주기 위한 툴이고, binary2text.exe는 바이너리파일을 읽을 수 있는 텍스트로 변환해 주는 툴이다. 

test_scenebundle이란 에셋번들을 풀어보자. 

> WebExtract.exe .\test_scenebundle

Extracting file '.\test_scenebundle'...
  stream version: 6
  unity version: 5.x.x
  unity revision: 2017.4.36f1
  data size: 9696101 bytes
  creating folder '.\test_scenebundle_data'
All ok!

그러면 같은 폴더내에 test_scenebundle_data라는 폴더가 생기고, 그 안에 씬의 컨텐츠를 포함한 바이너리 파일들이 생성된다.

여기 생성된 바이너리 파일을 이제 binary2text.exe를 통해 text파일로 변환해 보자.

> binary2text.exe .\test_scenebundle_data_data\BuildPlayer-test_scenebundle
> binary2text.exe .\test_scenebundle_data_data\BuildPlayer-test_scenebundle.sharedAssets

이제 다시 test_scenebundle_data 폴더를 들어가 보면, 아래와 같이 txt파일이 생성된 것을 볼 수 있다.

이제 txt파일을 열어 원하는 내용을 검색하여 찾아 볼 수 있다.  아래는 텍스트 파일안에 “test_pos”라는 게임오브젝트에 대한 정보이다. 

....
ID: 2 (ClassID: 1) GameObject
    m_Component  (vector)
        size 1 (int)
        data  (ComponentPair)
            component  (PPtr<Component>)
                m_FileID 0 (int)
                m_PathID 224 (SInt64)

    m_Layer 8 (unsigned int)
    m_Name "test_pos" (string)
    m_Tag 1 (UInt16)
    m_IsActive 1 (bool)
....


Leave a Reply

Your email address will not be published. Required fields are marked *