addressable을 활용한 SoundManager

이준영·2025년 9월 1일

오늘은 내가 사용은 했지만 코드를 써보지 않아서 팀원 코드를 보면서 공부 해보기로 하였다.

리소스 폴더의 단점

  • 보통 에셋을 불러오는 방법은 리소스 폴더를 활용하는 것인데, 리소스 폴더에는 여러 단점이 있다.
  1. 빌드 용량 증가와 로딩 시간 지연
    • 폴더 안에 있는 모든 에셋(Asset)은 빌드 시 게임에 자동으로 포함.
  2. 메모리 효율성 저하
    • 로드된 에셋은 언로드(unload)가 명확하게 이루어지지 않으면 메모리에 계속 남아있음.
  3. 복잡한 유지보수와 관리
    • 경로 문자열 의존성
    • 에셋 종속성 파악의 어려움

이런한 단점들을 해결하기 위해서 에셋 번들 또는 어드레서블을 활용한다.

어드레서블의 장점

https://docs.unity3d.com/kr/Packages/com.unity.addressables@1.21/manual/AddressableAssetsOverview.html

  • 어드레서블의 장점은
  1. 빌드 용량 최적화 및 로딩 시간 단축
    • 필요한 시점에 해당 에셋만 동적으로 로드
  2. 효율적인 메모리 관리
    • 자동으로 메모리에서 해제하는 기능을 제공
    • 중복된 에셋이 빌드되지 않도록 자동으로 관리
  3. 유연한 콘텐츠 업데이트 및 배포
    • 원격 서버에 있는 에셋도 쉽게 로드
    • 빌드 없는 업데이트

팀원 코드

  • 팀원이 작성한 addressable 코드이다.
ResourceLoader
  • 팀원이 구현한 코드를 보면, 두 가지 방법을 사용해서 에셋을 로드한다.
  1. 주소를 이용한 방법
  2. 라벨을 이용한 방법
  • 주소를 이용한 방법은 주소를 전부 적을 필요가 있다보니, 조금 비선호하는 방식이다.
  • 그래서 주로 라벨을 이용하여 사용하고 있다.
사용법
  • 사용 하기 전에 등록이 필요하다.

  • 옆에 BGM은 라벨이다.

  • 그리고 맨 밑에는 asd로 되어 있는데 저것은 주소 값을 수정한 것이다.

  • 즉 주소값을 원하는 스트링 값으로 변경하여 사용 가능하다.

  • 파일명이나 위치가 수정되도 같은 코드를 이용해서 계속 불러올 수 있는 것이다.

등록 방법
  • 에셋 파일에 저렇게 Addresaable을 체크해주면 된다.

SoundManager

  • 이 기능을 활용하여 SoundManager를 구성하였다.
SoundManager
  • BGM을 실행 시키는 코드이다.

  • GetBGMSound()는 라벨이 등록된 BGM들을 가져와서 Dictionary에 저장하는 코드이다.

  • 그리고 이 딕셔너리에 있는 코드를 실행키는 PlayBGM 코드와

  • 주소 값을 통해서 바로 실행시키는 PlayBGM 두 가지 다 코드를 작성하였다.

소감

사실 주소 값 변경 방법이 있는 줄 몰랐다. 팀원이 작성한 코드를 사용하다 보니 내가 공부한 것이 아니라 잘 몰랐는데, 오늘 다시 정리하면서 주소 값을 수정해서 사용할 수 있다는 것을 알게 되었다.

profile
게임 개발자가 되기 위해서 공부하는 중입니다.

0개의 댓글