Resources.로드된 BestPractices 검증 이해(Term, Unload)

8080 단어 ResourcesUnity
Resources.로드된 BestPractices 확인(여러 번 읽어보기)
계속하다
Resources.UnityEngine을 로드합니다.객체 열기
Resources.UnLoad 매개 변수만 하면 안 되는 거 알아요.
여기서 UnityAPI 문서를 다시 봅니다.
· 참조된 Asset에만 호출할 수 있습니다.
· 해제된 객체를 비활성화합니다.
그래서 자원.왜냐하면 불러오는 방법이 아닌 것 같아요.
이번에는 아래의 원본 코드로 해방된 테스트를 해 보려고 한다.
ResourcesLoaderByType.cs
using System;
using System.Collections;
using UnityEngine;

public class ResourcesLoaderByType : MonoBehaviour
{
    public enum LoadType
    {
        Order = 0,

        Sprite
    };

    // LoadTypeの定義順に合わせること
    private static readonly System.Type[] _LoadTypeTable = new System.Type[]
    {
        typeof(UnityEngine.Object),

        typeof(Sprite)
    };

    public event Action<UnityEngine.Object> OnLoadComplete;

    [SerializeField, Header("ResourcesLoadのPathを指定")]
    private string ResourcesLoadPath;

    [SerializeField, Header("指定したAssetの型を指定")]
    private LoadType AssetType;

    private UnityEngine.Object Asset;

    private IEnumerator Start()
    {
        var request = Resources.LoadAsync(ResourcesLoadPath, _LoadTypeTable[(int)AssetType]);

        yield return request;

        Asset = request.asset;

        if (OnLoadComplete != null)
            OnLoadComplete(Asset);
    }

    private void OnDestroy()
    {
        if (Asset == null)
            return;

        switch (AssetType)
        {
            case LoadType.Order:
                Resources.UnloadAsset(Asset);
                break;
            case LoadType.Sprite:
                {
                    var targetObject = Asset as Sprite;

                    if (targetObject == null)
                        break;

                    Resources.UnloadAsset(targetObject.texture);
                    Resources.UnloadAsset(targetObject);
                }
                break;
        }
    }
}

대충
1. 리소스 로드 경로에 지정된 AssetType을 지정된 형식으로 비동기적으로 가져옵니다.
2. 읽기가 완료되면 OnLoadComplete라고 합니다.
3. 풀면 지정된 Type에서 참조로 다운로드된 Asset을 UnloadAsset합니다.
행동을 보기 위해 이번에는 Sprite만
참고:
로드 중 폐기되면 어떻게 하나요?등등의 고려
·하행 방송 자체가 실패할 위험성이 있다.
이제 예처럼 Profiler로 Memory 항목을 봅니다.
로드 시

마운트 해제 시

미리 프로필에 불러올 때 추가된 것을 적어두다
언로드로 부르는 부분이 움직이는 것 같습니다.
단지
Resources.지정된 유형에 로드된 내용을 보려면 다음과 같이 하십시오.
• 프로필을 통해 보기
자원.로드 소스 내용 보기
나는 단지 조금밖에 생각하지 못했기 때문에 Asset에서
이미지
소리
・Prtefab、component
필요할 때 불러오기, 필요하지 않을 때 방출
이런 용도로 사용하면 상당히 리스키처럼 느껴진다.
가장 중요한 것은 여러 개의 Unload를 불러야 한다는 것이다. 정말 징그럽다
특히 Prefab, component는 sprite나 audio source가 있는 상태에서
평범하게 하기 때문에 붙어있는 Asset을 Unload로 만들면
해방된 대상의 Asset 같은 코드를 검색하고 삭제하는 것은 해서는 안 되고, 하고 싶지도 않다.
이 방법의 용도는 여기에 공식적인 추천을 하는 거예요.
가장 좋은 방법을 사용하지 마라
설령 사용한다 하더라도
・ ScriptableObject를 사용하여 설정 파일 읽기
• 변경되지 않은 최소한의 데이터베이스 덤프 읽기
얼마 안 남았지?
단지 모든 플랫폼에 자원 폴더가 있는 자산 처리
다르기 때문에 잘 조사해서 사용하는 것이 가장 좋다
(멀티 플랫폼이라면 사용하지 않는 것이 좋다

좋은 웹페이지 즐겨찾기