Основы программирования: переменные и поля класса
ฝัง
- เผยแพร่เมื่อ 16 พ.ย. 2024
- #КурсыЯндексИгр В этом уроке научимся создавать поля класса и отображать их в инспекторе, а также узнаем, как менять свойства разных компонентов из скрипта.
Скрипт из урока лежит здесь: disk.yandex.ru...
Следующее видео «Создание скрипта управления персонажем»: • Создание скрипта управ...
Удобная рабочая тетрадь по курсу: yandexgames-un...
TH-cam-канал Ильи Карельцева: / @eccentricgames
Остались вопросы? Присоединяйтесь к нашему чату в Telegram для разработчиков игр на Unity, чтобы получить дополнительную информацию: t.me/yagamesunity
Чтобы первыми узнавать о продуктах Яндекса для геймдева, подписывайтесь на наш канал «Яндекс Игры для Разработчиков»: / @yagamesdev
Огромное вам спасибо, без вас бы тупил беспросветно, и копался бы в этих классах и полях еще не один месяц.
Яндекс утер Скиллбокс - бесплатно выдав то, что последние за 100к+ продают. Говорю, потому что купил, просмотрел курс от скиллбокса и понял, что в ютубе вся инфа уже есть.
Спасибо большое за такие подробные уроки.
Огромная благодарность автору и всей Вашей команде....Очень информативно и доступно, это здорово!
Пожалуйста продолжайте в том же духе...
P.S. про нижние подчеркивания так и не рассказал...(
Подчеркивание в названии ставят приватным переменным (приватный значит, доступ имеет только внутри этого скрипта) если переменная публичная, то черточки не добавляют. Делается для того, чтоб в будущем, когда кода уже много можно было сразу понять, какая переменная приватная, а какая публичная и не приходилось прокручивать вверх и смотреть какая это переменная.
Илья, здравствуйте. Спасибо за такой позитивный отзыв. Будем продолжать развиваться в этом направлении 🙂
Автор очень хорошо дает материал, интересно и понятно, спасибо большое!
Здравствуйте. Рады, что видео понравилось. Спасибо за обратную связь 🙂
Я со всеми согласен.Он очень отлично объясняет,хоть сейчас идти програмировать.😊
Эх, жаль что 7 лет назад такого не было) Круто!
Владислав, здравствуйте. Рады, что курс понравился. Спасибо за обратную связь 🙂
🤟Супер понятно объясняет!!!!
Да хорошие ролики очень информативно и понятно 👍
Здравствуйте. Спасибо за обратную связь. Рады, что вам понравилось :)
Норм так с ходу ООП тему инкапсуляции😮 Лучше написать паблик функции геттеры и сеттеры ,чтоб с других скриптов получить доступ к приватным полям класса
Спасибо за урок
Нормчик ✌ прохожу на одном дыхании 🤝
Привет! Essentric Games :D
Почему к компоненту Renderer мыобращаемся через GetComponent, а к transform по другому?
В классе Object есть геттер для transform, gameObject и tag, а у остальных компонентов геттеры бросают исключение и ругаются на deprecated property, то есть устаревшие или запрещенные. Класс Object для них требует использовать метод GetComponent. Там прям в Object провались, посмотри, есть комменты.
А про чёрточку так и не сказал в конце)) _nameOfVariable означает что она с модификатором private))
Здравствуйте. Да, можно использовать такое наименование, чтобы из названия переменной было видно, какая она. Например, публичные поля назвать так: public int Value;
Приватные: public int _value;
Переменные, которые создаются внутри методов: int value;
@@yagamesdev теперь понятно) А я все голову ломал. После java немного не привычно. String с маленькой буквы и т.д. Хотя вроде и тоже самое
так и не понял, откуда поля эти скопировались на четвертой минуте, кто понял подскажите пожалуйста?? Это из unity или вручную их все таки надо прописать??
вручную надо
Блин почему когда сам писал по видео строчки кода у меня капсула сплющилась и всё тут, а как вставил код и запустил всё заработало пока непонятно.
Здравствуйте. У меня не двигается персонаж на нажатие кнопок, а когда прописана одна кнопка, то он движется только в этом направлении даже не нажимая на нее.
Добрый вечер попробовал использовать вместо Light тип GameObject не смог обратиться к его полям
Здравствуйте. Такая ситуация может происходить, так как GameObject и Light - это разные классы в Unity. Чтобы получить доступ к полям Light, необходимо использовать переменную типа Light, а не GameObject. Для этого можно добавить на объект компонент Light, после чего получить доступ к этому компоненту с помощью метода GetComponent().
Спасибо за видео, все понятно. При самостоятельном изучении возник вопрос, а как быть с вызовом компонента текста? Например, я прикрепил над головой персонажа ник и хочу, чтобы моему персонажу я мог дать имя прямо из инспектора, но ничего не получается.
Сначала я создал поле в инспекторе
[SerializeField] private string _nickname;
а после мне нужно получить компонент в котором вводится текст, чтобы ник менялся каждый раз когда я меняю его в инспекторе
gameObject.GetComponent().text = _nickname;
Пробовал разные вариации, но, возможно, я что-то не так понял.
Иван,
Говорят, существуют два компонента TextMesh Pro. Обычный компонент , который работает с MeshRenderer и ещё может заменять то, что ранее было в поле с текстом. Второй - это UGUI компонент, который зовётся и работает с CanvasRenderer (что это такое сама не нашла). По этой причине просто не бумдет рамботать. Если бы я знала, почему компилятор именно его предлагает. Я не знаю, почему он его предлагает.
Шоб вся радость зарамботала надо добавить четвёртой строкой using TMPro;. Без неё чел будет задаваться вопросом, мол кто это такая эта ваша TextMeshPro.
Я может быть решила вопрос странным способом, другого пока в голову не пришло
using TMPro;
[SerializeField] private TextMeshPro _nickname; - туда в юнити запихнуть Text(TMP)
[SerializeField] private string _nicknamebox; - это поле, в которое надо будет ввести имя, которое будет висеть потом над капсулой
void Start()
{
_nickname.GetComponent().text = _nicknamebox;
}
void Update()
{
_nickname.GetComponent().position = transform.position + new Vector3(0, 1, 0);
//проверяла, будет ли текст двигаться за капсулой
if (Input.GetKeyDown(KeyCode.W))
{
transform.position += new Vector3(0, 2, 0);
}
}
@@Елена-д2ы5ю Да, спасибо большое! "TextMeshPro" я пытался использовать, но вот до использования using не додумался) В результате получилось то, что нужно, правда я немного грубее это сделал, но все работает)
using TMPro;
[SerializeField] private string _nickname;
[SerializeField] private Transform _bubble;
[SerializeField] private TextMeshPro _nicknamebox;
void Start()
{
_nicknamebox.GetComponent().text = _nickname;
}
void Update()
{
if(Input.GetKey(KeyCode.W))
{
transform.position += new Vector3(0, 0, 0.03f);
}
if (Input.GetKey(KeyCode.S))
{
transform.position += new Vector3(0, 0, -0.03f);
}
if (Input.GetKey(KeyCode.A))
{
transform.position += new Vector3(-0.03f, 0, 0);
}
if (Input.GetKey(KeyCode.D))
{
transform.position += new Vector3(0.03f, 0, 0);
_bubble.position = transform.position + new Vector3(0, 1f, 0);
}
}
Иван, добрый день. В скрипте необходимо создать поле: [SerializeField] TextMeshProUGUI _nameText; Затем добавить в него текст в инспекторе. В скрипте можно будет к нему обращаться: _nameText.text = “Ivan”;
@@yagamesdev спасибо за помощь! Так кажется правильнее, поменяю у себя.
Good job bro but why when I write new vector 3 doesn't work his color doesn't turn green why?
Hello. That might happen when Integrated development environment (IDE) is not chosen. In order to set the IDE, please, open menu «Edit» - «Preferences» - «External Tools». Click on the current IDE in the field «External Script Editor».
У меня пишет что fieldOfView не существует. Хотя я верно указал тип камеры.
Здравствуйте. Для решения предлагаем следующее:
1. Проверьте, что переменная не пустая, например, через «Debug.Log(_camera)». Это поможет узнать, существует ли камера.
2. Перезапустите Unity и убедитесь в том, что у вас установлена стабильная LTS версия движка.
Обязательно сообщите нам о результатах - будем разбираться дальше.
Можно ли попросить отдельное видео на тему Материалов? Точнее их изготовление и все ньансы. Где брать разновидности материалов. Запрещено ли использовать рандомные картинки из яндекса?
Здравствуйте. Не рекомендуем добавлять случайные картинки, так как они могут быть защищены авторским правом. Подробнее в пункте 2.6.4. Лицензионного соглашения по ссылке: clck.ru/34Pu8Q
да мы камеру прикрутили к игроку всё остальное вроде бесполезно
Ваша голова со спинкой кресла в углу экрана перекрывает обзор нижнего угла, очень часто
Здравствуйте. Спасибо за обратную связь, учтём ваши комментарии.
про точк ниче е сказал что это за символы капец