Unity 매뉴얼 스크립팅 API 해설
에셋 워크플로 및 리소스 로드
Unity에서는 프로젝트에서 사용하기 위해 씬의 일부로 로드하지 않고도 리소스를 활용할 수 있는 기능이 제공됩니다. 이 기술은 다양한 상황에서 유용하게 사용되며, 예를 들어 드물게 사용되는 캐릭터나 기능(예: "비밀" 기능, 오류 메시지, 하이스코어 알림 등)에 적용됩니다.
리소스를 동적으로 로드하여 초기 다운로드 시간을 줄이거나 게임 콘텐츠를 교체할 수 있습니다.
리소스 폴더
리소스 폴더는 에셋이 주 게임 파일에 공급되지만 요청이 있을 때까지 로드되지 않는 기능을 지원합니다.
- Resources 폴더 생성 방법
- 프로젝트 뷰에서 새 폴더를 만듭니다.
- 폴더 이름을 “Resources”로 지정합니다.
리소스 폴더의 에셋에 접근하려면 Resources.Load()
를 호출해야 합니다.
구분 | 설명 |
---|---|
리소스 폴더 | 에셋이 포함된 폴더. Resources 라는 이름을 가져야 함. |
로딩 방법 | Resources.Load() 메서드를 통해 로드 가능. |
메모리 관리 | Resources.UnloadUnusedAssets() 를 사용하여 언로드 가능. |
에셋 번들
에셋 번들은 외부의 에셋 컬렉션입니다. 다수의 에셋 번들이 존재할 수 있으며, 이는 최종 사용자가 동적으로 접근할 수 있는 웹 서버에 위치합니다.
에셋 번들 생성 방법
에셋 번들을 빌드하기 위해서는 BuildPipeline.BuildAssetBundles()
를 호출하고, 포함할 오브젝트 배열을 지정해야 합니다. 이렇게 생성된 에셋 번들은 런타임에서 AssetBundle.LoadAsset()
을 통해 동적으로 로드할 수 있습니다.
구분 | 설명 |
---|---|
에셋 번들 | 외부의 에셋 컬렉션으로, 최종 사용자에게 제공됨. |
빌드 방법 | BuildPipeline.BuildAssetBundles() 호출. |
로딩 메서드 | AssetBundle.LoadAsset() 를 이용하여 로드 가능. |
리소스 언로드
리소스 관리는 게임의 성능을 높이고 메모리 사용을 최적화하는 데 중요한 요소입니다.
에셋 번들의 리소스를 언로드하려면 다음 메서드를 사용할 수 있습니다:
AssetBundle.Unload(bool)
AssetBundle.UnloadAsync(bool)
설정한 파라미터에 따라 메모리를 해제할 수 있습니다.
구분 | 설명 |
---|---|
언로드 방법 | Unload() 메서드 사용. |
메모리 관리 | 파라미터에 true 라면 모든 오브젝트가 삭제되고 메모리 해제. |
오브젝트 유지 | 파라미터에 false 전달 시 오브젝트는 유지되지만 메모리 해제. |
예제 코드
간단한 예제로 리소스 폴더에서 에셋을 로드하고 에셋 번들을 처리하는 방법을 살펴보겠습니다.
// 리소스 폴더에서 에셋 로드하기
GameObject prefab = Resources.Load("MyPrefab") as GameObject;
// 에셋 번들 로드하기
AssetBundle myBundle = AssetBundle.LoadFromFile("path/to/mybundle");
GameObject bundledObject = myBundle.LoadAsset<GameObject>("MyBundledAsset");
// 메모리 해제하기
myBundle.Unload(false); // 에셋 오브젝트를 유지하면서 메모리 해제
이 가이드는 Unity에서 리소스를 효과적으로 관리하고 동적으로 로드하는 방법에 대한 기본적인 이해를 도와줄 것입니다. 다양한 기능과 사용법을 활용하여 게임 개발에 활용해보세요!