private void OnDestroy()
 {
     if (reference != null && reference.IsValid())
     {
         reference.ReleaseAsset();
     }
 }
 void OnDisable()
 {
     //note that this may be dangerous, as we are releasing the asset without knowing if the instances still exist.
     // sometimes that's fine, sometimes not.
     leftObject.ReleaseAsset();
     rightObject.ReleaseAsset();
     spawnMaterial.ReleaseAsset();
     midMaterial.ReleaseAsset();
     lateMaterial.ReleaseAsset();
 }
Beispiel #3
0
        public static void ReleaseScreen(string name)
        {
            AssetReferenceGameObject a = null;

            UIScreenReference[] s = instance.uiScreens.screens;
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i].name == name)
                {
                    a = s[i].asset;
                    break;
                }
            }

            a.ReleaseAsset();
        }
Beispiel #4
0
        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;
            }
        }