Open Eu4ng opened 10 months ago
Player
프리팹 인스턴스 스폰Player
프리팹 인스턴스 파괴Enemy
프리팹 인스턴스 스폰using UnityEngine;
using UnityEngine.AddressableAssets;
public class PlayerSpawner : MonoBehaviour
{
[SerializeField] AssetReferenceGameObject m_Player;
[SerializeField] AssetReferenceGameObject m_Enemy;
void Start()
{
// Player 스폰 후 파괴
var player = Addressables.InstantiateAsync(m_Player).WaitForCompletion();
Addressables.ReleaseInstance(player);
// Enemy 스폰
var enemy = Addressables.InstantiateAsync(m_Enemy).WaitForCompletion();
}
}
Player
프리팹 인스턴스가 스폰 즉시 파괴된 이후 Enemy
프리팹 인스턴스가 스폰된 상황입니다.
Player
프리팹 인스턴스가 파괴되었을 때 Enemy
프리팹은 사용되지 않았기 때문에 정상적으로 에셋 번들이 언로드 됩니다.
Player
프리팹 인스턴스 스폰Enemy
프리팹 인스턴스 스폰Player
프리팹 인스턴스 파괴using UnityEngine;
using UnityEngine.AddressableAssets;
public class PlayerSpawner : MonoBehaviour
{
[SerializeField] AssetReferenceGameObject m_Player;
[SerializeField] AssetReferenceGameObject m_Enemy;
void Start()
{
// Player 스폰
var player = Addressables.InstantiateAsync(m_Player).WaitForCompletion();
// Enemy 스폰
var enemy = Addressables.InstantiateAsync(m_Enemy).WaitForCompletion();
// Player 파괴
Addressables.ReleaseInstance(player);
}
}
Player
, Enemy
프리팹 인스턴스가 스폰된 이후 Player
프리팹 인스턴스를 파괴한 경우입니다.
아직 Enemy
프리팹 인스턴스는 파괴되지 않았기 때문에 Player
프리팹 인스턴스가 파괴될 때 에셋 번들이 언로드되지 않습니다.
하지만 동일한 상황에서 Bundle Mode
를 Pack Separately
로 변경한다면 Player
프리팹은 언로드됩니다.
Player
프리팹과 Enemy
프리팹은 동일한 그룹에 속해있지만 서로 다른 에셋 번들로 패키징되기 때문입니다.
에셋 번들 언로드 테스트
참고
어드레서블 에셋 시스템으로 메모리 최적화하기
설명
에셋 번들에 존재하는 다른 에셋이 사용 중에는 사용하지 않는 특정 에셋만 부분 언로드가 불가능합니다. 이를 테스트 해보았습니다.
테스트 환경
Unity Editor : 2022.3.13f1 Addressables : v1.21.19
Default Local Group