Precàrrega d'Assets
Una memòria cau d'Addressables en runtime amb pressupost de bytes configurable i expulsió LRU, preescalfada per etiqueta a l'arrencada i inspeccionable en viu amb un Cache Inspector.
Per a què serveix aquest sistema
Addressables resol com carregar un asset per clau; no resol quan carregar-lo ni quanta memòria està disposat a gastar un projecte a mantenir assets a mà. Sense una capa de memòria cau deliberada, els jocs o recarreguen els mateixos assets una vegada i una altra — pagant una estrebada de càrrega cada cop — o ho retenen tot en memòria indefinidament fins que el pressupost d'una plataforma s'esgota.
La Precàrrega d'Assets de Serenity se situa entre el codi del joc i Addressables com una memòria cau de runtime amb un pressupost de bytes configurable. Els assets es precarreguen per clau o es preescalfen per etiqueta a l'arrencada, es mantenen en memòria fins al pressupost i s'expulsen per menys-usat-recentment quan un asset nou empenyeria la memòria cau per sobre — sense més codi que un asset de configuració i un grapat de crides a casos d'ús.
El problema a Unity
Carregar un Addressable el primer cop que es necessita és simple, però produeix una estrebada visible just quan el jugador està mirant la pantalla — un menú que s'obre, un nivell que comença, un arquetip d'enemic que apareix per primera vegada. Preescalfar-ho tot per endavant evita l'estrebada però no té límit natural: l'ús de memòria creix amb el projecte fins que algú poda a mà.
Fins i tot una memòria cau escrita a mà sol saltar-se la part difícil — decidir què expulsar quan se supera el pressupost, i fer-ho de manera consistent en lloc de amb crides de neteja ad hoc disperses per les transicions d'escena. Sense una memòria cau compartida, dos sistemes que volen mantenir calent el mateix asset acaben carregant-lo i descarregant-lo d'esquena l'un a l'altre.
Com ho aborda Serenity
Un PrefetchPolicyProfile defineix el pressupost i la política de la memòria cau — un pressupost de bytes, un sostre d'elements previst i una estratègia i política d'expulsió amb nom — agrupats per un PrefetchPolicyRegistry que resol perfils per id. IAssetPrefetcherService és la memòria cau de runtime: precarrega un asset per clau, preescalfa un lot, consulta l'estat de la memòria cau i deixa que el servei expulsi automàticament les entrades menys usades recentment quan se supera el pressupost de bytes.
PrewarmAssetsByLabelsTask corre durant l'arrencada, resolent una llista d'etiquetes d'Addressables a claus i precarregant cadascuna abans que el jugador arribi al contingut que les necessita — una tasca, dirigida per dades, en lloc d'una llista d'assets a escalfar mantinguda a mà i dispersa pel codi d'inicialització.
Com encaixa a Serenity
La política imposada avui és el pressupost de mida amb expulsió LRU: MaxSizeMB és el comandament que suporta la càrrega, acotat a un mínim perquè un projecte mai pugui configurar la memòria cau al no-res, i el servei expulsa l'entrada menys usada recentment quan un asset nou empenyeria els bytes en memòria cau per sobre del pressupost. Els camps d'estratègia i expulsió del perfil es porten al runtime per compatibilitat futura, però de moment no canvien el comportament del servei més enllà d'això.
El servei composa amb el Pipeline d'Inicialització com a instal·lador d'arrencada i amb PrewarmAssetsByLabelsTask per a l'escalfament dirigit per etiquetes, i amb qualsevol agregat que carregui Addressables — personatges, onades, àudio, prefabs d'UI — a través de la mateixa llista de preescalfament per etiqueta, sense acoblament per agregat amb la pròpia memòria cau.
Flux de treball pràctic
- Crea un PrefetchPolicyProfile amb un pressupost de bytes (MaxSizeMB) i afegeix-lo a un PrefetchPolicyRegistry perquè es pugui resoldre per id a l'arrencada.
- Connecta el registry a l'instal·lador de la Precàrrega d'Assets com a part del teu pipeline d'inicialització perquè la memòria cau existeixi abans que el gameplay la necessiti.
- Afegeix PrewarmAssetsByLabelsTask a la seqüència d'arrencada amb les etiquetes d'Addressables que vols calentes abans que el jugador arribi a aquest contingut.
- Crida IAssetPrefetcherService.PrefetchAsync per a càrregues sota demanda, o PrewarmContextAsync per a un lot, des de qualsevol sistema de gameplay que necessiti un asset calent.
- Obre el Cache Inspector de runtime sobre el servei en viu per veure el contingut de la memòria cau per asset, agrupat per categoria — Animations, Audio, Textures — al costat dels diagnòstics de la memòria cau.
- Fes servir les accions Refresh i Clear del Cache Inspector durant el desenvolupament per confirmar el pressupost i el comportament d'expulsió abans de donar per bons els números del perfil.
Què inclou
- Memòria cau de runtime IAssetPrefetcherService amb precàrrega per clau, preescalfament per lots i consultes d'estat de memòria cau
- ScriptableObjects PrefetchPolicyProfile i PrefetchPolicyRegistry definint un pressupost de bytes i una política amb nom
- Pressupost de bytes configurable amb expulsió LRU automàtica quan els bytes en memòria cau superen el pressupost
- PrewarmAssetsByLabelsTask per preescalfar a l'arrencada cada asset que porti una etiqueta d'Addressables triada
- Cache Inspector en viu sobre el servei de runtime — contingut per asset agrupat per categoria (Animations, Audio, Textures)
- Diagnòstics de memòria cau i controls Refresh/Clear a l'inspector per iterar ràpid durant el desenvolupament
- Composa amb qualsevol agregat que carregui Addressables mitjançant preescalfament per etiqueta, sense acoblament per agregat
- Abast honest: la política imposada avui és el pressupost de mida amb expulsió LRU, per davant de qualsevol suport futur d'estratègies
Quan fer-lo servir
- Projectes que veuen estrebades de càrrega quan els assets d'Addressables es carreguen per primera vegada just quan el jugador està mirant la pantalla.
- Jocs que volen un sostre de memòria per als assets en memòria cau en lloc de recarregar constantment o retenir-ho tot indefinidament.
- Equips que volen un preescalfament d'arrencada dirigit per etiquetes d'Addressables en lloc d'una llista d'assets a escalfar mantinguda a mà en codi.
- Bases de codi que necessiten visibilitat de què està en memòria cau ara mateix i per què es va expulsar alguna cosa, sense bussejar per reflexió a les entranyes d'Addressables.
Sistemes relacionats
Fes servir Serenity quan vulguis assets d'Addressables mantinguts calents sota un pressupost de memòria real, expulsats automàticament en superar-lo i visibles d'un cop d'ull amb un Cache Inspector en viu.
English
Español
Català