Видеокурс "Основы C++ в Unreal Engine 5"
0
140
0
140

Видеокурс "Основы C++ в Unreal Engine 5"

  • БЕСПЛАТНО

    ПОДРОБНОЕ ОПИСАНИЕ

    Автор: Михаил Русаков

    Бесплатный курс по основам C++ в Unreal Engine 5 даст Вам фундамент знаний по использованию C++ в движке.

    Разбираются следующие темы: unreal-макросы, делегаты, правильные типы данных, интерфейсы, логирование, assertions, структуры, перечисления, таймеры, delay и многое-многое другое.

    Помимо уроков, Вы также получите несколько десятков упражнений для закрепления материала!


    Основы C++ в Unreal Engine 5. Урок №1. Введение. (Михаил Русаков)
  • Урок 1. Введение

    Урок 2. Установка необходимого ПО

    Упражнения:

    • Скачайте и установите лаунчер.
    • Установите Unreal Engine 5.
    • Установите Visual Studio.
    • Создайте ThirdPerson-проект на C++ в Unreal Engine 5 и убедитесь, что всё работает.

    Урок 3. Установка и настройка clang-format

    Упражнения:

    • Настройте clang-format.
    • Убедитесь, что clang-format работает.

    Урок 4. Создание первого проекта

    Упражнения:

    • Создайте новый FirstPerson-проект на C++.
    • Тщательно изучите каждую строчку кода.

    Урок 5. Как работает движок изнутри?

    Упражнения:

    • Изучите, какие модули подключены в Build.cs, посмотрев описание каждого из них в справочнике на сайте Михаила Русакова

    Урок 6. Рефакторинг шаблона от третьего лица

    Упражнения:

    • Перенесите все h-файлы в директорию public, а cpp-файлы в директорию private.
    • Убедитесь, что после рефакторинга и переноса файлов ничего не сломалось.
    • Создайте класс типа AActor с любым названием.
    • Вытащите на сцену экземпляр созданного класса.

    Урок 7. Создание C++ класса

    Упражнения:

    • На BeginPlay создайте и проинициализируйте 5 переменных подходящего типа для: строки, которая будет показываться игроку, здоровья, выносливости, количества собранных монет, местоположения игрока. Примечание: задание имеет несколько правильных решений. Например, для здоровья можно использовать и uint32, и float, но не FVector или FName.

    Урок 8. Типы данных

    Упражнения:

    • На BeginPlay создайте и проинициализируйте 5 переменных подходящего типа для: строки, которая будет показываться игроку, здоровья, выносливости, количества собранных монет, местоположения игрока. Примечание: задание имеет несколько правильных решений. Например, для здоровья можно использовать и uint32, и float, но не FVector или FName.

    Урок 9. Логирование

    Упражнения:

    • На BeginPlay выведите на экран значения всех 5 переменных, созданных ранее.
    • На Tick выводите в лог значения всех 5 переменных, созданных ранее.

    Урок 10. Макрос UPROPERTY

    Упражнения:

    • Создайте переменную класса любого типа, чтобы она могла настраиваться только в BP-классе.
    • Создайте переменную класса любого типа, чтобы она могла настраиваться только в экземпляре класса на сцене.
    • Создайте переменную класса любого типа, чтобы она отображалась только в ClassDefaults и была не доступной для изменения.
    • Создайте переменную класса любого типа, чтобы к ней можно было обратиться через Blueprint (как на чтение, так и на запись).

    Урок 11. Construction Script в C++

    Упражнения:

    • Добавьте UStaticMeshComponent* в класс.
    • Добавьте переменную типа FRotator, сделав её редактируемой у любого экземпляра на сцене.
    • При редактировании FRotator в редакторе должен сразу меняться поворот у StaticMeshComponent.

    Урок 12. Макрос UFUNCTION

    Упражнения:

    • Создайте простую функцию, просто выводящую в лог строку «My Function», которую можно будет переопределить в Blueprint.
    • В BP-реализации созданной функции необходимо вызвать базовую логику, плюс добавить вывод на экран строки «My BP-Function».

    Урок 13. Asserts

    Упражнения:

    • Добавьте проверки check на все указатели, которые используются в Вашем коде, включая код из шаблона FirstPerson.

    Урок 14. Структуры

    Упражнения:

    • Создайте структуру с переменными следующих типов: UStaticMesh* и UMaterial*.
    • Добавьте новую переменную в класс Вашего Actor с типом созданной структуры с возможностью её настройки у экземпляра класса на сцене.
    • В OnConstruction считайте данные из структуры и установите их в переменную типа UStaticMeshComponent*. Примечание: для установки материала можно использовать функцию SetMaterial в UStaticMeshComponent.
    • Убедитесь, что, когда Вы в редакторе меняете StaticMesh или материал у переменной типа структуры, у Вас автоматически меняется и сам StaticMeshComponent.

    Урок 15. Перечисления

    Упражнения:

    • Создайте 3 простых материала со следующими BaseColor: красный, зелёный и синий.
    • Создайте перечисление в C++ со следующими значениями: Red, Green, Blue.
    • Настройте свой Actor так (добавив переменную, прописав нужную логику), чтобы при выборе значения перечисления в редакторе, автоматически у StaticMesh менялся материал на соответствующий. То есть, если был выбран, например, Green, на StaticMesh должен наложиться зелёный материал.

    Урок 16. Делегаты

    Упражнения:

    • Добавьте UBoxComponent* в класс персонажа.
    • Сделайте так, чтобы при пересечении компонента UBoxComponent* с любым экземпляром созданного Вами класса типа AActor на сцене, он исчезал, а в лог выводилась строка: «Item has been taken».
    • Добавьте переменную в класс персонажа, которая должна будет увеличиться на 1 вместе с собиранием предметов на сцене.

    Урок 17. Виджеты

    Упражнения:

    • Добавьте делегат в Ваш класс персонажа, который будет вызываться, когда подобран очередной предмет. В качестве дополнительного параметра делегата будет подаваться общее количество собранных предметов.
    • Сделайте виджет в C++ с текстовым блоком.
    • В качестве логики виджета подпишитесь на созданный ранее делегат, и обновляйте текстовый блок числом, соответствующим количеству собранных игроком предметов.
    • Сделайте простейший дизайн для виджета.
    • Создайте C++класс, как наследника от AHUD, с переменной: TSubclassOf HUDWidgetClass.
    • На BeginPlay у созданного в предыдущем задании класса должен появиться виджет, соответствующий переменной HUDWidgetClass, и отобразиться на экране.
    • Создайте BP-наследника от созданного класса, а также укажите правильное значение для переменной HUDWidgetClass. Примечание: не забудьте про GameMode.
    • Убедитесь, что виджет появился, и он отображает количество собранных предметов, и это число увеличивается всякий раз на 1, когда подбирается очередной предмет.

    Урок 18. Таймеры

    Упражнения:

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

    Урок 19. Delay

    Упражнения:

    • Сделайте задержку в 1 секунду в виджете после получения уведомления от делегата и перед изменением текстового блока. Примечание: то есть игрок собирает предмет, а виджет должен обновиться на экране только через 1 секунду.

    Урок 20. Интерфейсы

    Упражнения:

    • Создайте интерфейс, который должен будет реализовать класс персонажа.
    • Перенесите в интерфейс делегат из класса персонажа.
    • Создайте функцию в интерфейсе, которая возвращает ссылку на делегат.
    • Реализуйте интерфейс в классе персонажа.
    • Перепишите класс виджета так, чтобы он зависел только от созданного интерфейса и не зависел от класса персонажа.
    • Убедитесь, что всё по-прежнему работает.

    Урок 21. Заключение

    • Важные слова напутствия.

  • Основы C++ в Unreal Engine 5. Урок №1. Введение. (Михаил Русаков)

ПОХОЖИЕ ТОВАРЫ