Resources 폴더

이인혁·2024년 8월 29일
0

유니티

목록 보기
13/20

유니티(Unity)에서 Resources 폴더는 특정 리소스를 런타임에 동적으로 로드할 수 있도록 하기 위해 사용되는 특별한 폴더입니다. 이 폴더에 있는 파일들은 빌드 시 자동으로 프로젝트에 포함되며, 코드에서 Resources.Load 함수를 사용해 해당 리소스를 불러올 수 있습니다.

예시

public class Example : MonoBehaviour
{
    void Start()
    {
        // Resources 폴더 안에 있는 "MyTexture"라는 이름의 텍스처 로드
        Texture2D myTexture = Resources.Load<Texture2D>("Textures/MyTexture");

        // 로드한 텍스처를 사용할 오브젝트에 적용
        GameObject myObject = new GameObject("MyObject");
        Renderer renderer = myObject.AddComponent<Renderer>();
        renderer.material.mainTexture = myTexture;
    }
}

Resources 폴더의 특징과 사용법

폴더 위치

Resources 폴더는 프로젝트의 Assets 폴더 아래에 자유롭게 생성할 수 있습니다. 여러 개의 Resources 폴더를 만들 수 있으며, 그 안에 다양한 파일들을 저장할 수 있습니다.

리소스 접근

Resources.Load<T>(string path) 함수를 사용하여 Resources 폴더 안의 리소스를 동적으로 로드할 수 있습니다. 여기서 T는 로드할 리소스의 타입(예: Texture2D, AudioClip 등)을 나타내고, path는 파일 경로(확장자 제외)입니다.

Texture2D myTexture = Resources.Load<Texture2D>("Textures/MyTexture");

리소스 관리

Resources.UnloadUnusedAssets()를 호출하면 더 이상 사용되지 않는 Resources 폴더의 리소스들을 언로드(unload)하여 메모리를 해제할 수 있습니다.

특정 리소스를 언로드할 때는 Resources.UnloadAsset(Object asset)을 사용합니다.

Resources.UnloadAsset(myTexture);

단점

에셋관리의 난이도가 증가하고, 메모리 관리가 복잡해지며 빌드 및 게임 실행시간이 늘어납니다. 단점을 보완하면서 사용하는 방법은

  • 과도한 사용 자제: Resources 폴더에 너무 많은 리소스를 저장하는 것은 좋지 않습니다. 빌드된 애플리케이션에서 메모리 관리가 어려워질 수 있으며, 불필요하게 메모리 사용량이 늘어날 수 있습니다.
  • 메모리 로딩: Resources.Load는 리소스를 메모리에 즉시 로드하므로, 큰 파일을 로드할 때는 주의가 필요합니다. 필요할 때마다 동적으로 로드하고, 사용 후에는 적절히 해제하는 것이 좋습니다.
  • AssetBundle 사용 고려: 프로젝트가 커질수록 AssetBundle과 같은 더 효율적인 방법을 사용하는 것이 좋습니다. AssetBundle은 빌드된 패키지에서 리소스를 효율적으로 관리하고 로드할 수 있는 유니티의 기능입니다.
profile
게임개발공부블로그

0개의 댓글