Serializefield unity c что это
Перейти к содержимому

Serializefield unity c что это

  • автор:

SerializeField

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Submission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Your name Your email Suggestion * Submit suggestion

Description

Force Unity to serialize a private field.

When Unity serializes your scripts, it only serializes public fields. If you also want Unity to serialize your private fields you can add the SerializeField attribute to those fields.

Unity serializes all your script components, reloads the new assemblies, and recreates your script components from the serialized versions. This serialization is done with an internal Unity serialization system; not with .NET’s serialization functionality.

The serialization system can do the following:

  • CAN serialize public non-static fields (of serializable types)
  • CAN serialize nonpublic non-static fields marked with the SerializeField attribute.
  • CANNOT serialize static fields.
  • CANNOT serialize properties.

Serializable types

Unity can serialize fields of the following types:

  • All classes inheriting from UnityEngine.Object, for example GameObject, Component, MonoBehaviour, Texture2D, AnimationClip.
  • All basic data types, such as int, string, float, bool.
  • Some built-in types, such as Vector2, Vector3, Vector4, Quaternion, Matrix4x4, Color, Rect, LayerMask.
  • Arrays of a serializable type
  • Lists of a serializable type
  • Enums
  • Structs

For more information on serialization, see Script Serialization.

Note: If you put one element in a list (or array) twice, when the list gets serialized, you’ll get two copies of that element, instead of one copy being in the new list twice.

Note: If you want to serialize a custom Struct field, you must give the Struct the [System.Serializable] attribute.

Hint: Unity won’t serialize Dictionary, however you could store a List<> for keys and a List<> for values. See ISerializationCallbackReceiver for an example.

using UnityEngine;

public class SomePerson : MonoBehaviour < //This field gets serialized because it is public. public string firstName = "John";

//This field does not get serialized because it is private. private int age = 40;

//This field gets serialized even though it is private //because it has the SerializeField attribute applied. [SerializeField] private bool hasHealthPotion = true;

void Start() < if (hasHealthPotion) Debug.Log("Person's first name: " + firstName + " Person's age: " + age); > >

Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.

Copyright ©2023 Unity Technologies. Publication Date: 2023-10-16.

обяснитье пожалуйста для чего нужен [SerializeField] ?

Разбор кода: объясните пожалуйста как работают циклы for, для чего нужен процент и что такое rnd.next
Добрый вечер, объясните пожалуйста как работают циклы for, для чего нужен процент и что такое.

Для чего нужен Seed() и для чего его override?
Привет, ребята. Прочитал много разных статей про Seed(). И так и не могу понять зачем он нужен на.

[SerializeField] для многих переменных
Как применить атрибут так, что бы он влиял не на 1 переменную, а на список паренных? Пример: .

154 / 109 / 42
Регистрация: 28.05.2022
Сообщений: 752
Показать приватную переменную в инспекторе.
К примеру:

[SerializeField] private bool boolean;

Это все что я знаю о SerializeField.
*это все выполняет не .NET а сама unity
Регистрация: 06.04.2022
Сообщений: 57

[SerializeField] это инкапсулирование (запрет на редактирование через другие скрипты этого поля)

Сериализация — это автоматический процесс преобразования структур данных или состояний объектов в формат,
который Unity может сохранять и восстанавливать позже.

Позволяет сериализовать переменные вне зависимости от их области видимости. Позволяет сделать все переменные класса приватными, но настраиваемыми в Inspector.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Для чего нужен this?
Привет, хочу чтоб мне обяснили что такое this, для чево оно, я пишу программы просто без нево и.

Для чего нужен JS
Добрый вечер! Вопрос может совсем уж банальный, но все же осмелюсь его задать, поскольку форум.

Для чего нужен this?
Не могу понять в чем разница Name = name; ////// this.Name=name;

Для чего нужен less?
Для чего нужны препроцессоры less или sass если есть css, они же в принципе не дают возможность.

Для чего нужен This?
Объясните пожалуйста на примере, для чего конкретно нужен идентификатор This? В доках почитал его.

Для чего нужен C++?
Уважаемые, я учу C++ уже 7 лет, зачем нужен C++?

Для чего нужен C#?
Для чего нужен C#? На чем луче писать интернет-приложения и Online игры?

Атрибут Unity [SerializeField]

Добрый день, понимаю, что по-поводу этого атрибута в сети много статей и информации в целом, однако я не понял одного момента и поэтому я хотел бы его прояснить.
Этот атрибут делает переменные видимыми в редакторе, ну в основном его только для этого и используют. Однако понятие сериализация переводится как «перевести в биты» и я либо чего-то не понимаю, либо как перевод в биты влияет на то, что переменные начинают показываться в редакторе?

#1
23:19, 4 апр 2018

Сериализация — это перевод в биты. Эти биты нужно где-то хранить, например на диске. В юнити это работает примерно так: данные записываются на диск и в случае необходимости могут быть изменены И эти изменения сохраняются снова на диске (если это не playMode). На сколько я понимаю, редактор юнити отображает только сериализованные данные, по это причине их и сериализуют.

#2
0:30, 5 апр 2018

Да, Unity показывает в стандартном инспекторе только те поля, которые сериализирует.

Сериализацию можно понимать как процесс приведения кучи разнотипных данных к какому-то единому виду (перевести в поток битов/байтов, в xml, в json, ещё во что-нибудь), для того чтобы куда-то записать/сохранить или передать по сети. Потом над полученным потоком данных можно провести обратное действие — десериализацию — и получить назад данные в исходном виде.

По умолчанию Unity сериализирует только public поля. Если хочется, чтобы сериализировались поля и с другими модификаторами доступа, надо таким полям добавлять атрибут SerializeField.

1. Ты меняешь что-то в коде.
2. Unity перекомпилирует код.
3. Сериализирует всё что может и сохраняет полученные данные на диск.
4. Выгружает старый работающий код.
5. Загружает только что скомпилированный новый код.
6. Десериализирует сохранённые на диске данные и восстанавливает старые значения полей у всех компонентов.

1. Ты нажимаешь Play.
2. Unity сериализирует всё что может и сохраняет данные на диск.
3. В режиме Play меняешь значения каких-то полей или они меняются сами программно.
4. Нажимаешь Stop.
5. Unity десериализирует сохранённые данные и восстанавливает старые значения полей, как они были до нажатия на Play.

Для своих компонентов можно написать свой инспектор, который будет показывать любые поля; но просто у тех полей, которые в Unity не сериализируются, значения будут обнуляться после каждой перекомпиляции кода или выхода из режима Play. Это будет неинтуитивно и неудобно, поэтому логично, что такие поля Unity просто не показывает в инспекторе.

#3 – Базовые концепции скриптов в Unity

#3 – Базовые концепции скриптов в Unity

В уроке мы рассмотрим базовые концепции при работе с C# скриптами в Unity. Вы научитесь выводить информацию в консоль и ознакомитесь с использованием и отображением переменных и массивов в Юнити.

Видеоурок

В базовом плане язык C# в Юнити ничем не отличается в от языка C# вне Unity. Вы точно так же можете создавать переменные, циклы, условия и прочие стандартные концепции языка.

В уроке мы рассмотрели множество стандартных примеров по использованию языка. Дополнительно были рассмотрены модификаторы: NonSerialized и SerializeField. Рассмотрим их детальнее:

  • NonSerialized – указывает что поле с типом public не будет показано в Unity;
  • SerializeField – указывает что поле с типом private будет показано в Unity.

Базовый функционал

using UnityEngine; using System; using System.Collections; using System.Collections.Generic; public class Basics : MonoBehaviour < [NonSerialized] public int _num = 5; public string word; [SerializeField] private float nums; public int[] numbers = new int[3]; public Listwords = new List(); void Start() < if (_num != 5) Debug.Log(word + nums); Info(); >void Info() < >>

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *