2017년 2월 24일 금요일

Unity3D 외부 리소스 가져오기

유니티로 빌드하면 에셋이 묶여서 엑세스가 불가하게 된다.
대량의 에셋을 추가하려면 에셋 번들을 이용하면 되는데,
이런 경우 말고 직접 리소스를 추가하고 싶은 경우가 있다.

최근 프로젝트에서 필요해서 하는김에 간단히 정리해봤다.
처음 하는 사람들에게 도움이 되길 -_-*

# Resource.Load 사용하기

private void ResourceLoadSample(){

  Texture2D texture = new Texture2D(0, 0); 
  string PATH = "Texture/image.jpg";    // 이미지 파일 패스를 써준다. 
  //중요한 것은 유니티 프로젝트 Assets/Resource/ 폴더 이후의 경로를 써주는 것이다. 이 폴더는 맘대로 바꿀 수가 없다.
  texture = Resources.Load(PATH,typeof(Texture2D)) as Texture2D;  // 이미지 로드
  targetObject.mainTexture = texture;  // 타겟 오브젝트에 메인 텍스쳐를 넣어준다.

}

# System.File.IO로 직접 가져오기
Resource 폴더가 아니라 다른 폴더 특히 StreamingAssets에서 가져오려면

Resource.Load 함수를 쓰지 말고 직접 System.File.IO 로 가져와야 한다.
byte[] 로 가져온 다음에 Texture2D.LoadImage()를 사용하여 텍스쳐2D로 읽어오면 된다.



private void SystemIOFileLoad(){

byte[] byteTexture = System.IO.File.ReadAllBytes(Path); 
    if (byteTexture.Length > 0) 
    { 
        texture = new Texture2D(0, 0); 
        texture.LoadImage(byteTexture); 
    } 
}


# 원하는 경로/파일에 엑세스 하기

# StreamingAssets 폴더의 하위 폴더/파일에 접근해본다.
Path = System.IO.Path.Combine(Application.streamingAssetsPath, path); // path = 하위폴더 "하위폴더1/하위폴더2/file.png";


댓글 1개:

  1. 올려주신 팁 덕분에 골아프던 문제가 해결되었어요... 감사합니다...

    답글삭제