¿Cuál es el papel de Assetbundle en el desarrollo de juegos 2D con Unity3D?
1. Default
Assetbundle puede encapsular Prefab, ¡lo cual es realmente conveniente! Y también recomiendo encarecidamente que empaquete su Prefab como un Assetbundle, porque los Prefabs pueden empaquetar componentes de juegos, scripts de juegos y texturas alojadas en objetos del juego. Cuando descargas un Assetbundle del servidor, puedes crear una instancia y ponerlo en tu juego.
Imagínese si solo puede colocar el archivo de recursos binario original en el servidor para descargarlo, luego, cuando se descarga el archivo de recursos, necesita crear dinámicamente el objeto del juego y luego vincular dinámicamente el script al objeto del juego. , asigna texturas dinámicamente a objetos del juego y varias operaciones dinámicas. Por lo tanto, se recomienda encarecidamente utilizar Prefa y no entraremos en detalles.
Además, por ejemplo, dado que el modelo puede tener muchos archivos de animación, el conjunto de recursos del modelo puede consistir en varios archivos FBX y algunos archivos de textura png y archivos de material. Simplemente puse el modelo original en una casa prefabricada y contiene todos los componentes del modelo, incluso los recursos de animación y las texturas. Entonces, como se muestra a continuación, Mode es el archivo prefabricado del modelo, y todo lo que necesito hacer es empaquetar el modo prefabricado en un Assetbundle. Cuando descargo este Assetbundle en el servidor y lo cargo en el juego, puedo usarlo para alternar animaciones y texturas.
2. Archivos binarios
No todos los Assetbundles utilizan valores predeterminados, pero los Assetbundles también pueden encapsular archivos binarios, como imágenes, sonidos, información de texto, etc.
3. Archivo de escena
En Unity, puedes guardar la escena en una escena, y la escena contendrá todo el contenido de la escena, por lo que puedes encapsular la escena en un archivo. ¿Paquete de activos? ¿Qué pasa con el medio? La respuesta es sí, pero no se puede utilizar en la plataforma móvil porque el script no se puede actualizar en la plataforma móvil. En otras palabras, incluso si el script está vinculado al Prefab, no todos los scripts se ejecutarán después de descargar el Assetbundle. Lo haremos más adelante. Se discutirá otro uso inteligente.
4. Plataforma móvil
Momo ya ha introducido los principios del uso de Assetbundle en general. Ahora hablemos de la plataforma móvil. La imposibilidad de actualizar scripts es uno de los mayores inconvenientes de la plataforma móvil, lo que significa que los desarrolladores no pueden actualizar sus aplicaciones sin pasar por tiendas en línea como App Store y Google Play. Lo único que se puede hacer es actualizar los recursos. Por ejemplo, cuando se trata de actualizaciones de versiones de juegos, generalmente hay números de versión principales y números de versión menores, que son 2.0 y 3.0. AppStore. La versión principal es principalmente para actualizar el script del juego. Luego, cuando el número de versión secundaria, como 2.0.1 o 2.0.2, es solo para actualizar los recursos del juego, esto lo puede hacer usted mismo a través del servidor del juego, descargándolo. a tu propio servidor a través de Assetbundle y luego adaptado al juego. Si tiene que actualizar el script, o si tiene que actualizar el script, solo puede ir a Appstore o Google Play para actualizar la versión principal.
¿Qué debo hacer si no puedo actualizar un script vinculado a una casa prefabricada en plataformas móviles? En cualquier plataforma, puede agregar scripts a Prefab y empaquetarlos en Assetbundle. Solo en plataformas móviles, la situación es especial. Por ejemplo, si vincula el script Test.cs a Prefab, el programa final pasa El servidor descarga el Assetbundle. luego, cuando lo cargue en su proyecto, el script no se ejecutará.
Sin embargo, si hay un script Test.cs en el proyecto local, Unity vinculará automáticamente el script al Prefab descargado y ejecutará el script normalmente. Si no hay un script Test.cs en el proyecto local, el script en Prefab nunca se ejecutará. A veces escribimos variables públicas en scripts, por lo que es posible que el mismo script esté vinculado a diferentes Prefabs pero use diferentes parámetros públicos en el script Inspector. No te preocupes por este problema, no habrá ningún problema con los Prefabs en el Assetbundle, por lo que mientras el script no tenga problemas en la versión grande, no habrá ningún problema en actualizar solo los recursos del juego en la versión pequeña. .
5. Optimización móvil
Dijimos antes que puedes empaquetar un objeto del juego en un Assetbundle, o puedes empaquetar toda la escena en un Assetbundle, pero creo que debes hacerlo. Utilice escenas empaquetadas con prudencia, porque hay muchos modelos de uso común en la escena, y si empaqueta la escena, la memoria y el tamaño serán los mismos que los de los modelos de uso común. Si empaquetamos la escena, la memoria y el tamaño de la escena serán del tamaño de un modelo normal * N escenas, lo que realmente da miedo si lo piensas. De hecho, podemos aprovechar esto inteligentemente colocando primero todas las partes públicas y privadas de la escena en Unity y luego horneando toda la escena. Una vez completada la cocción de la escena, saque el modelo público y mantenga solo el modelo privado en la escena. También puede crear una herramienta que guarde las coordenadas del modelo público en la escena como XML (cada archivo de escena tendrá información XML para el modelo público) y luego encapsule el modelo público en otro paquete de activos.
El servidor proporciona un Assetbundle para cada escena y un Assetbundle para el modelo genérico. En términos generales, los Assetbundles para modelos generales se pueden colocar en la memoria residente (que puede usarse con frecuencia según el proyecto). Después de descargar el Assetbundle de escena, cárguelo en la escena y luego guarde dinámicamente la parte del modelo común en el archivo XML de acuerdo con la escena correspondiente al modelo común (cada archivo de escena corresponderá a una información XML del modelo común). La escena Assetbundle se descarga y carga en la escena, y luego se agrega dinámicamente a la escena de acuerdo con la información XML correspondiente a la escena, completando así la construcción de una escena.