2022. 6. 16. 22:28ㆍUnity/스크립트 기본
Assets/Resources 폴더가 있어야 함
//Load a text file (Assets/Resources/Text/textFile01.txt)
TextAsset textFile = Resources.Load<TextAsset>("Text/textFile01");
//Load text from a JSON file (Assets/Resources/Text/jsonFile01.json)
TextAsset jsonTextFile = Resources.Load<TextAsset>("Text/jsonFile01");
//Then use JsonUtility.FromJson<T>() to deserialize jsonTextFile into an object
//Load a Texture (Assets/Resources/Textures/texture01.png)
Texture2D texture = Resources.Load<Texture2D>("Textures/texture01");
//Load a Sprite (Assets/Resources/Sprites/sprite01.png)
Sprite sprite = Resources.Load<Sprite>("Sprites/sprite01");
//아래 처럼 적용 가능
this.gameObject.GetComponent<SpriteRenderer>().sprite = Resources.Load<Sprite>("Sprites/sprite01");
//Load an AudioClip (Assets/Resources/Audio/audioClip01.mp3)
AudioClip audioClip = Resources.Load<AudioClip>("Audio/audioClip01");
// Instantiates a Prefab named "enemy" located in any Resources folder in your project's Assets folder.
GameObject instance = Instantiate(Resources.Load("enemy", typeof(GameObject))) as GameObject;
장점
간단한 사용: Unity Editor 내에서 간단하게 사용할 수 있으며, 별도의 설정이 필요 없습니다.
(초기)즉시 로딩: Resources.Load 메소드를 사용하여 쉽게 자산을 동기적으로 로드할 수 있습니다.
단점
빌드 크기 증가: Resources 폴더에 있는 모든 자산은 최종 게임 빌드에 포함되므로, 빌드 크기가 커질 수 있습니다.
로딩 시간: 큰 자산이나 많은 양의 자산을 로드할 때 게임의 로딩 시간에 영향을 줄 수 있습니다.
메모리 관리의 어려움: 로드된 자산은 수동으로 관리해야 하며, 메모리 관리가 어렵습니다.
에셋번들
장점
플랫폼별 최적화: 다양한 플랫폼을 대상으로 최적화된 에셋을 포함할 수 있습니다.
동적 로딩: 게임이 실행 중일 때 필요한 에셋을 로드하고 언로드할 수 있어 메모리 사용을 최적화할 수 있습니다.
단점
복잡한 의존성 관리: 수동으로 의존성을 관리해야 하며, 이는 관리하기 어려울 수 있습니다.
업데이트 관리 어려움: 업데이트 시 전체 에셋 번들을 다시 다운로드해야 하는 경우가 있어 효율성이 떨어질 수 있습니다.
어드레서블
장점
동적 콘텐츠 관리: 어드레서블 시스템은 게임의 콘텐츠를 동적으로 관리하고 업데이트할 수 있게 해줍니다. 이를 통해 게임의 초기 다운로드 크기를 줄이고, 필요할 때마다 콘텐츠를 불러올 수 있습니다.
쉬운 의존성 관리: 자동 의존성 추적을 지원하여, 필요한 모든 의존성이 함께 로드됩니다.
메모리 관리: 사용하지 않는 자산을 쉽게 언로드하여 메모리 관리를 개선할 수 있습니다.
클라우드 콘텐츠 배포: 클라우드 스토리지와 통합하여 콘텐츠를 원격으로 배포하고 업데이트할 수 있습니다.
단점
학습 곡선: 새로운 개념과 시스템을 학습해야 하며, 기존 에셋 번들 시스템에서 전환하는 경우 구조적 변화가 필요할 수 있습니다.
설정 복잡성: 큰 프로젝트에서는 설정과 관리가 복잡해질 수 있습니다.