Version: 5.6
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 uses serialization to load and save Scenes, Assets, and AssetBundles to and from your computer’s hard drive. This includes data saved in your own scripting API objects such as MonoBehaviour components and 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 with editorial review - Leave page feedback

Script Serialization
Serialización personalizada
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961