Основы программирования: переменные и поля класса

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 พ.ย. 2024
  • #КурсыЯндексИгр В этом уроке научимся создавать поля класса и отображать их в инспекторе, а также узнаем, как менять свойства разных компонентов из скрипта.
    Скрипт из урока лежит здесь: disk.yandex.ru...
    Следующее видео «Создание скрипта управления персонажем»: • Создание скрипта управ...
    Удобная рабочая тетрадь по курсу: yandexgames-un...
    TH-cam-канал Ильи Карельцева: / @eccentricgames
    Остались вопросы? Присоединяйтесь к нашему чату в Telegram для разработчиков игр на Unity, чтобы получить дополнительную информацию: t.me/yagamesunity
    Чтобы первыми узнавать о продуктах Яндекса для геймдева, подписывайтесь на наш канал «Яндекс Игры для Разработчиков»: / @yagamesdev

ความคิดเห็น • 44

  • @lay9996
    @lay9996 ปีที่แล้ว +7

    Огромное вам спасибо, без вас бы тупил беспросветно, и копался бы в этих классах и полях еще не один месяц.

  • @alexanderlex-s933
    @alexanderlex-s933 ปีที่แล้ว +12

    Яндекс утер Скиллбокс - бесплатно выдав то, что последние за 100к+ продают. Говорю, потому что купил, просмотрел курс от скиллбокса и понял, что в ютубе вся инфа уже есть.

  • @nijeleka
    @nijeleka ปีที่แล้ว +6

    Спасибо большое за такие подробные уроки.

  • @ИльяСвавильный
    @ИльяСвавильный 2 ปีที่แล้ว +21

    Огромная благодарность автору и всей Вашей команде....Очень информативно и доступно, это здорово!
    Пожалуйста продолжайте в том же духе...
    P.S. про нижние подчеркивания так и не рассказал...(

    • @364Lastgo
      @364Lastgo 2 ปีที่แล้ว +18

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

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +3

      Илья, здравствуйте. Спасибо за такой позитивный отзыв. Будем продолжать развиваться в этом направлении 🙂

  • @Helvetica_U
    @Helvetica_U ปีที่แล้ว +7

    Автор очень хорошо дает материал, интересно и понятно, спасибо большое!

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว

      Здравствуйте. Рады, что видео понравилось. Спасибо за обратную связь 🙂

  • @Женькапека
    @Женькапека 10 หลายเดือนก่อน +1

    Я со всеми согласен.Он очень отлично объясняет,хоть сейчас идти програмировать.😊

  • @Art_Logic
    @Art_Logic 2 ปีที่แล้ว +6

    Эх, жаль что 7 лет назад такого не было) Круто!

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +2

      Владислав, здравствуйте. Рады, что курс понравился. Спасибо за обратную связь 🙂

  • @РемонтКитайскихГаджетов
    @РемонтКитайскихГаджетов ปีที่แล้ว +1

    🤟Супер понятно объясняет!!!!

  • @antigames4656
    @antigames4656 2 ปีที่แล้ว +5

    Да хорошие ролики очень информативно и понятно 👍

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +1

      Здравствуйте. Спасибо за обратную связь. Рады, что вам понравилось :)

  • @ЕвгенАвтоген-у8ф
    @ЕвгенАвтоген-у8ф 11 หลายเดือนก่อน

    Норм так с ходу ООП тему инкапсуляции😮 Лучше написать паблик функции геттеры и сеттеры ,чтоб с других скриптов получить доступ к приватным полям класса

  • @sheonaner
    @sheonaner ปีที่แล้ว +1

    Спасибо за урок

  • @oldborodach
    @oldborodach ปีที่แล้ว

    Нормчик ✌ прохожу на одном дыхании 🤝

  • @prokhorkulak2224
    @prokhorkulak2224 2 ปีที่แล้ว +1

    Привет! Essentric Games :D

  • @TheNobless2
    @TheNobless2 2 ปีที่แล้ว +3

    Почему к компоненту Renderer мыобращаемся через GetComponent, а к transform по другому?

    • @evgenytretyakov6123
      @evgenytretyakov6123 ปีที่แล้ว

      В классе Object есть геттер для transform, gameObject и tag, а у остальных компонентов геттеры бросают исключение и ругаются на deprecated property, то есть устаревшие или запрещенные. Класс Object для них требует использовать метод GetComponent. Там прям в Object провались, посмотри, есть комменты.

  • @Kitsikoo
    @Kitsikoo 2 ปีที่แล้ว +3

    А про чёрточку так и не сказал в конце)) _nameOfVariable означает что она с модификатором private))

    • @yagamesdev
      @yagamesdev  2 ปีที่แล้ว +3

      Здравствуйте. Да, можно использовать такое наименование, чтобы из названия переменной было видно, какая она. Например, публичные поля назвать так: public int Value;
      Приватные: public int _value;
      Переменные, которые создаются внутри методов: int value;

    • @pashka_f
      @pashka_f ปีที่แล้ว

      @@yagamesdev теперь понятно) А я все голову ломал. После java немного не привычно. String с маленькой буквы и т.д. Хотя вроде и тоже самое

  • @МихаилМихайлов-ы4б
    @МихаилМихайлов-ы4б ปีที่แล้ว

    так и не понял, откуда поля эти скопировались на четвертой минуте, кто понял подскажите пожалуйста?? Это из unity или вручную их все таки надо прописать??

    • @romkache
      @romkache ปีที่แล้ว

      вручную надо

  • @nayxodonozer
    @nayxodonozer 8 หลายเดือนก่อน

    Блин почему когда сам писал по видео строчки кода у меня капсула сплющилась и всё тут, а как вставил код и запустил всё заработало пока непонятно.

  • @krekerkrek4745
    @krekerkrek4745 ปีที่แล้ว

    Здравствуйте. У меня не двигается персонаж на нажатие кнопок, а когда прописана одна кнопка, то он движется только в этом направлении даже не нажимая на нее.

  • @ГантлосГрегрнс
    @ГантлосГрегрнс 2 ปีที่แล้ว

    Добрый вечер попробовал использовать вместо Light тип GameObject не смог обратиться к его полям

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +1

      Здравствуйте. Такая ситуация может происходить, так как GameObject и Light - это разные классы в Unity. Чтобы получить доступ к полям Light, необходимо использовать переменную типа Light, а не GameObject. Для этого можно добавить на объект компонент Light, после чего получить доступ к этому компоненту с помощью метода GetComponent().

  • @RWFrost
    @RWFrost 2 ปีที่แล้ว

    Спасибо за видео, все понятно. При самостоятельном изучении возник вопрос, а как быть с вызовом компонента текста? Например, я прикрепил над головой персонажа ник и хочу, чтобы моему персонажу я мог дать имя прямо из инспектора, но ничего не получается.
    Сначала я создал поле в инспекторе
    [SerializeField] private string _nickname;
    а после мне нужно получить компонент в котором вводится текст, чтобы ник менялся каждый раз когда я меняю его в инспекторе
    gameObject.GetComponent().text = _nickname;
    Пробовал разные вариации, но, возможно, я что-то не так понял.

    • @Елена-д2ы5ю
      @Елена-д2ы5ю 2 ปีที่แล้ว +4

      Иван,
      Говорят, существуют два компонента 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);
      }
      }

    • @RWFrost
      @RWFrost 2 ปีที่แล้ว +1

      @@Елена-д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);

      }
      }

    • @yagamesdev
      @yagamesdev  2 ปีที่แล้ว +3

      Иван, добрый день. В скрипте необходимо создать поле: [SerializeField] TextMeshProUGUI _nameText; Затем добавить в него текст в инспекторе. В скрипте можно будет к нему обращаться: _nameText.text = “Ivan”;

    • @RWFrost
      @RWFrost 2 ปีที่แล้ว +1

      @@yagamesdev спасибо за помощь! Так кажется правильнее, поменяю у себя.

  • @oussamaelazhari8222
    @oussamaelazhari8222 ปีที่แล้ว +1

    Good job bro but why when I write new vector 3 doesn't work his color doesn't turn green why?

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +1

      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».

  • @taliondocoto6686
    @taliondocoto6686 11 หลายเดือนก่อน

    У меня пишет что fieldOfView не существует. Хотя я верно указал тип камеры.

    • @yagamesdev
      @yagamesdev  11 หลายเดือนก่อน

      Здравствуйте. Для решения предлагаем следующее:
      1. Проверьте, что переменная не пустая, например, через «Debug.Log(_camera)». Это поможет узнать, существует ли камера.
      2. Перезапустите Unity и убедитесь в том, что у вас установлена стабильная LTS версия движка.
      Обязательно сообщите нам о результатах - будем разбираться дальше.

  • @milord5873
    @milord5873 2 ปีที่แล้ว +1

    Можно ли попросить отдельное видео на тему Материалов? Точнее их изготовление и все ньансы. Где брать разновидности материалов. Запрещено ли использовать рандомные картинки из яндекса?

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +2

      Здравствуйте. Не рекомендуем добавлять случайные картинки, так как они могут быть защищены авторским правом. Подробнее в пункте 2.6.4. Лицензионного соглашения по ссылке: clck.ru/34Pu8Q

  • @goosesuka
    @goosesuka ปีที่แล้ว

    да мы камеру прикрутили к игроку всё остальное вроде бесполезно

  • @LordDD55
    @LordDD55 ปีที่แล้ว +1

    Ваша голова со спинкой кресла в углу экрана перекрывает обзор нижнего угла, очень часто

    • @yagamesdev
      @yagamesdev  ปีที่แล้ว +1

      Здравствуйте. Спасибо за обратную связь, учтём ваши комментарии.

  • @ИграПравдивый
    @ИграПравдивый 8 หลายเดือนก่อน

    про точк ниче е сказал что это за символы капец