Version: 2021.1
Script Serialization
Serialización personalizada

Serialización incorporada

Algunas de las funciones incorporadas de Unity usan automáticamente la serialización. Estas se detallan a continuación.

Mire la documentación acerca de Script Serialization para más información.

Guardar y cargar

Unity utiliza la serialización para cargar y guardar Escenas, Assets y AssetBundles hacia y desde el disco duro de su computadora. Esto incluye los datos guardados en sus propios objetos API de scripting, como los componentes MonoBehaviour y ScriptableObjects.

Esto sucede en el modo de Reproducción del Editor y el modo de Edición.

Ventana del Inspector

Cuando ve o cambia el valor del campo de un componente de un GameObject en la ventana Inspector, Unity serializa estos datos y luego los muestra en la ventana Inspector. La ventana Inspector no se comunica con la Scripting API de Unity cuando muestra los valores de un campo. Si utiliza propiedades en su script, nunca se llamará a ninguno de los getters y setters de propiedades cuando vea o cambie valores en las ventanas de Inspector ya que Unity serializa los campos de la ventana de Inspector directamente.

Recargando scripts en el Editor de Unity

Cuando cambia y guarda un script, Unity vuelve a cargar todos los datos de script cargados actualmente. Primero almacena todas las variables serializables en todos los scripts cargados, y después de cargar los scripts los restaura. Todos los datos que no son serializables se pierden después de que se recargó la secuencia de comandos.

Esto afecta a todas las ventanas Editor, así como a todos los comportamientos MonoBehavior en el proyecto. A diferencia de otros casos de serialización en Unity, los campos privados se serializan de forma predeterminada al volver a cargar, incluso si no tienen el atributo ‘SerializeField’.

Prefabs

En el contexto de la serialización, un Prefab es la información serializada de uno o más GameObjects y componentes. Una instancia Prefab contiene una referencia tanto a la fuente Prefab como a una lista de modificaciones a la misma. Las modificaciones son lo que Unity necesita hacer al origen Prefab para crear esa instancia Prefab en particular.

La instancia Prefab solo existe mientras edita su proyecto en el Editor de Unity. Durante la compilación del proyecto, el Editor de Unity ejemplifica un GameObject a partir de sus dos conjuntos de datos de serialización: la fuente Prefab y las modificaciones de la instancia Prefab.

Instanciación

Cuando llama Instantiate en cualquier cosa que exista en una Escena, como un Prefab o GameObjects, Unity lo serializa. Esto sucede tanto en tiempo de ejecución como en el Editor. Todo lo que se deriva de UnityEngine.Object se puede serializar.

Unity luego crea un nuevo GameObject y deserializa los datos en el nuevo GameObject. A continuación, Unity ejecuta el mismo código de serialización en una variante diferente para informar a qué otro UnityEngine.Objects se está haciendo referencia. Compruebe todos los UnityEngine.Objects referenciados para ver si son parte de los datos que se están instanciando. Si la referencia apunta a algo “externo”, como una textura, Unity conserva esa referencia tal como es. Si la referencia apunta a algo “interno”, como un GameObject hijo, Unity revisa la referencia de la copia correspondiente.

Des-cargar assets no utilizados

Resource.GarbageCollectSharedAssets () es el recolector de basura de Unity nativo y realiza una función diferente al recolector de basura C# estándar. Se ejecuta después de cargar una escena y busca objetos (como texturas) a los que ya no se hace referencia y los descarga de forma segura. El recopilador de basura de Unity nativo ejecuta el serializador en una variación en la que los objetos informan todas las referencias a UnityEngine.Objects externos. Así es como las texturas que fueron utilizadas por una escena se descargan en la siguiente.


• 2017–05–15 Page published

Script Serialization
Serialización personalizada