private void OnDestroy() { if (reference != null && reference.IsValid()) { reference.ReleaseAsset(); } }
private void Method() { // * Valid 검사를 수행하지 않으면 // 이미 로드되었는데도 중복 로드될 수 있다. // 1-1. 애셋 레퍼런스로부터 메모리에 로드 및 핸들 참조 if (!redCubeReference.IsValid()) { redCubeHandle = redCubeReference.LoadAssetAsync(); } // 1-2. 메모리에 로드 + 성공 시 수행할 동작 지정 if (!redCubeReference.IsValid()) { redCubeReference.LoadAssetAsync().Completed += (AsyncOperationHandle <GameObject> handle) => { // 핸들 참조 등록 redCubeHandle = handle; // 로드 완료 시 수행할 동작들 redCubePrefab = handle.Result; }; } // 2. 메모리에 적재된 애셋을 실제로 사용 Instantiate(redCubePrefab); // 3-1. 애셋 레퍼런스를 기반으로 메모리에서 해제 if (redCubeReference.IsValid()) { redCubeReference.ReleaseAsset(); } // 3-2. 핸들을 기반으로 메모리에서 해제 if (redCubeHandle.IsValid()) { Addressables.Release(redCubeHandle); redCubePrefab = null; } }