오늘은 Resources 폴더를 사용해
동적으로 에셋을 로드하는 법에 대해 알아보고자 합니다.
구현 문제를 연습하다가 정적으로 할당하는 방법 외
동적으로 시도를 해보라는 상황이 있었는데
처음 떠올랐던 방법이 GetComponent, find 였습니다.
위 방식으로 어찌저찌 만들기는 했지만,
다른 방법들은 없었을까 고민하던 중
이전에 Resource 폴더를 활용해 에셋을 불러왔던 방식이 떠올랐습니다.
당시에는 이런 게 있구나 하고 넘어갔었는데 지금 보니 다시 보이더군요.
언제 사용하는지 문제점은 없는지 정리가 필요할 거 같아 작성해 봤습니다.
원리를 설명하자면
Resources라는 폴더를 만든 후,
그 안에 할당해 주고 싶은 내용들을 넣어주고
코드로 Resources 폴더에 접근,
타입과 이름으로 해당 내용을 찾아 할당해 주는 방식입니다 .
유니티 내 예약어로 Resources라는 이름 폴더에서만 동작합니다.
Resources라는 폴더가 여러개여도 전부 접근이 가능합니다.
사용 방법
먼저 Project 창에서 Resources라는 폴더를 만들어 줘야 합니다.
설명을 위해 다음과 같은 스크립트와 에셋들을 작성하고 세팅했습니다.
인 게임 화면
TestMusic의 경우 Sound 폴더 안에 있으므로 경로를 적어주었습니다.
폴더를 다르게 해도 정말 동작하는지 테스트해 봤습니다.
이렇게 폴더를 나눠 놓고 위의 코드 그대로 실행해 보니 정상 작동하더군요 .
단점
Resources 안에 있는 내용들은 게임 시작 시 무조건 메모리에 적재가 된다.
= 게임 내 불필요한 메모리 소모를 일으킬 수 있다.
어플리케이션 시작 시간과 빌드 시간 증가
이러한 점 때문에 유니티에서는 Resources 폴더 보단
Addressables 시스템을 사용하는 것을 권장한다고 합니다.
Addressable 도 한번 스쳐 지나가듯 들어본 거 같은데
결국 다 이어지네요. 재미있게. ㅎ
Resouce와 달리 에셋을 메모리에 할당했다가 메모리에서 사용하지 않을 때는
언로드하는 방식의 "에셋 번들" 이라는 기술도 있다고 합니다.
조만간 에셋 번들과 Addressable 내용도 공부하고 작성해 보도록 하겠습니다.
부족한 실력이라 쓸 내용이 넘치네요;;;
참고한(혹은 참고하면 좋을) 내용
https://youtu.be/Lgs7NqgF__s?si=DZwyNtiXdngNZg9g
'유니티 > 공통' 카테고리의 다른 글
유니티 - 에셋 번들에 대해 알아보자 (1) | 2024.10.22 |
---|---|
유니티 - 특정 스크립트가 적용되어 있는 오브젝트 찾는 법 (0) | 2024.10.21 |
유니티 - InputSystem에 대해 알아보자#2(내용 보충) (2) | 2024.10.17 |
유니티 - InputSystem에 대해 알아보자#1(기본) (0) | 2024.10.15 |
유니티 - JSON을 이용하여 데이터를 저장해보자. #2 응용 - 구글 스프레드 시트 활용 (feat. 구글 앱스 스크립트) (2) | 2024.10.05 |