[Desarrollo de juegos] Estrategia de empaquetado direccionable de Unity

Prefacio

Para conocer los conceptos básicos de Addressables, lea este artículo.

Tutorial completo direccionable

Recientemente, la empresa está escribiendo un nuevo marco y decidió abandonar el antiguo método de empaquetado en paquetes y utilizar Addressable, por lo que quiero simplificar la nueva solución de empaquetado y resolver todas las preguntas.

texto

El objetivo final del empaquetado es crear un montón de archivos Bundle, y ¿qué factores afectarán los resultados del paquete? En resumen, hay 3 factores clave y 1 factor no clave.

Factor clave 1: AssetGroups Personalizar AssetGroup

Factor clave 2: modo paquete

Factor clave 3: etiqueta personalizada

Puedes entender cómo usar estos tres elementos en una sola imagen.

Modificar el modo de paquete del grupo

Solía ​​ser Empacar juntos, pero ahora se cambió a Empacar juntos por etiqueta para realizar un empaquetado incremental.

Se puede encontrar que el archivo de paquete anterior todavía está allí, pero se han agregado tres archivos de paquete nuevos. Es obvio por el nombre que todo es el paquete anterior, lo que significa que no hay ninguna etiqueta y el nuevo paquete crea tres paquetes basados ​​en en la etiqueta Son el modo sin etiqueta y dos textura_1 textura_2.


[Pregunta] Si los recursos de diferentes grupos se configuran con la misma etiqueta, ¿se colocarán en el mismo paquete? La prueba encontró que no se colocarán en el mismo paquete.


Factor no crítico 1: una configuración de Grupo > Restricción de actualización de contenido

¿Por qué los primeros tres factores son críticos y éste un factor no crítico?

Respuesta: Esta opción debe determinarse antes del empaquetado por primera vez. El empaquetado incremental no se puede cambiar en el futuro. Si se cambia, se producirá un error (a menos que sea un paquete completo). Por lo tanto, el contenido del paquete es cambia constantemente, pero esta opción no se puede cambiar. Para actualizar recursos en caliente, seleccione recursos dinámicos o desmarque Evitar actualizaciones y use las opciones predeterminadas. Si el recurso rara vez se actualiza, se puede configurar como estático.

La versión antigua de Addressable tiene dos opciones.

No se puede cambiar la publicación posterior: recursos estáticos

Puede cambiar después del lanzamiento: recursos dinámicos

nueva versión

Evitar actualizaciones Si se deben evitar las actualizaciones

¡Tenga en cuenta! ! !

无论是新版本还是老版本,首次打包一定要确定好这个Group的Content Update Restriction选项并且在以后的版本中不允许更改,除非以后要再次完整的打包才可以更改。下面做个测试,看看Content Update Restriction到底有什么用

默认情况下是不勾选Prevent Updates或Can Change Post Release:动态资源

如果勾选了Prevent Updates或者是使用了Cannot Change Post Release:静态资源,资源发生改变并且执行增量打包时,你会看到Addressables Groups界面各种黄灯警告

Unity会提示你需要把改变的资源移动到一个新的Group中,并且你可以自己定义该Group的名字

当你点击ApplyChanges后,被警告的资源就会跑到这个新的Group中,如下图所示。

官方建议我们把项目中不常改动的资源设置为静态资源


打包粒度控制

接下来要考虑的问题是,Bundle的粒度要如何控制,假设我把所有资源放到一个Group中,那一个微小的改动就要下载整个bundle包,这肯定是不科学的。

那可否让每一个资源独立成一个Bundle,虽然这么做可行,但是考虑到效率也是不建议这么做的。颗粒度过小要考虑到IO发烫的问题。

有了上面两个疑问,那解决方案就比较清晰了,方案是:有的资源独立一个bundle,有的资源按文件夹打成一个bundle。被多个资源引用的公共资源,按文件夹打成一个bundle或每个资源独立一个bundle。

疑问:哪些资源需要按文件夹打包,哪些资源要独立一个bundle?

先来看看所有要打包的东西有哪些:

Atlas、Sprite、Lua脚本、Shader、Setting(Unity序列化Asset)、txt配表或者bytes配表数据、视频、音频、字体、预设(3D角色、特效、2DSpine、Live2D)

打包资源就是上述文件,而怎么区分用哪种策略呢

类型

是否依赖其他文件

以文件/文件夹打包

纯被动依赖

引用文件

Atlas

文件

Sprite

Supongo que te gusta

Origin blog.csdn.net/liuyongjie1992/article/details/129427673
Recomendado
Clasificación