일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 포스트 프로세싱
- ReferenceEquals
- Boxing
- Abstract Factory Pattern
- UniRx
- ScriptableObject
- Reflection
- Unity
- Addressable System
- Post Processing
- 디자인 패턴
- 인앱 결제
- sprite atlas
- 게임 개발
- 최적화
- addressable
- Android Plugin
- c#
- 스프라이트 아틀라스
- Unboxing
- equals
- Zenject
- Strategy Pattern
- 1인 개발
- ==
- design pattern
- 플러그인
Archives
- Today
- Total
One_KWS
Addressable System #2 - Profiler 및 Release 본문
Addressable Profiler
어드레서블은 에셋의 실시간 디버깅을 확인할 수 있는 프로파일러를 제공한다. Window - Asset Management - Addressables - Event VIewer를 클릭하여 프로파일러를 열 수 있다.
프로파일러를 사용하려면 AddressableAssetsData 폴더 안에 있는 AddressableAssetSettings에서 Send Profiler Events를 체크해야 한다.
에셋을 로드하면 프로파일러에서 실시간으로 프레임, 모노힙, 생성된 큐브의 수와 생성된 시점 등을 확인할 수 있다.
에셋 언로드
어드레서블을 이용하여 로드된 에셋들은 메모리에서 해제시키지 않으면 계속 남아있게 된다. 따라서 로드된 에셋을 다 사용하고 나면 메모리에서 해제시켜줘야 한다. 이전 글에서 만든 예제의 Loader 스크립트를 아래와 같이 수정하였다.
public void OnClickButton() {
Addressables.InstantiateAsync(assetReference).Completed += handle => {
var instance = handle.Result;
DestroyInstance(instance);
};
}
public void DestroyInstance(GameObject instance) {
Destroy(instance, 2f);
}
실행 후 버튼을 클릭하여 큐브를 생성해보자. 2초뒤 Hierachy에서는 큐브가 제거되었지만 프로파일러에서는 제거되지 않고 계속 남아있는 것을 확인할 수 있다.
다 사용한 에셋들은 Release 함수를 통해서 메모리 해제가 가능하다. LoadAssetAsync(), InstantiateAsync() 함수에 맞게 해제하면 된다.
Addressables.LoadAssetAsync() -> Addressables.Release();
Addressables.InstantiateAsync() -> Addressables.ReleaseInstance();
생성된 큐브가 삭제된 후 메모리에서도 해제되도록 코드를 수정한다.
public void OnClickButton() {
Addressables.InstantiateAsync(assetReference).Completed += handle => {
var instance = handle.Result;
StartCoroutine(DestroyInstance(instance));
};
}
public IEnumerator DestroyInstance(GameObject instance) {
yield return new WaitForSeconds(2f);
Destroy(instance);
Addressables.Release(instance);
}
실행을 해보면 큐브가 생성된 후 2초 뒤 삭제되고 메모리에서도 해제되는 것을 볼 수 있다.
'Unity' 카테고리의 다른 글
Unity 인앱 결제 (In-App Purchasing) 구현하기 (0) | 2023.03.01 |
---|---|
Unity 포스트 프로세싱 (Post-Processing) 정리 (0) | 2023.03.01 |
Addressable System #4 (0) | 2023.02.21 |
Addressable System #3 - Remote Asset (0) | 2023.02.21 |
Addressable System #1 - 에셋 로드 및 생성 (0) | 2023.02.21 |