This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Обзор программирования

В этой статье описаны способы создания проектов в Unigine.

Основная цель статьи - дать представление о настройке среды разработки и дать обзор программирования. Он содержит ссылки на другие статьи, которые помогут вам подготовить среду разработки, выбрать язык программирования и так далее.

Языки#

Для создания собственного проекта с Unigine вы можете использовать следующие языки программирования:

UnigineScript можно легко расширить с помощью Unigine API. Движок Unigine позволяет экспортировать код C ++ и C # и наоборот. Вы можете написать некоторые функции, используя язык C ++ или C #, и экспортировать их в UnigineScript. См. Статьи с примерами использования C++ API и C# API, чтобы узнать больше.

Платформы#

Unigine поддерживает следующие платформы:

  • Windows (10/11)
  • Linux (kernel 4.19+)

Для разработки приложений с использованием UNIGINE 2 SDK требуется 64-битная система. Движок полностью и эффективно использует многоядерную архитектуру ЦП.

С помощью Unigine вы можете создавать приложения для этих платформ с единой базой кода.

Подробнее о Требованиях к оборудованию .

Среды разработки#

Вы можете использовать любую из этих платформ ПК для написания вашего проекта на базе Unigine:

  • Windows
  • Linux

Помимо UNIGINE SDK, для каждой платформы требуется определенное программное обеспечение, которое необходимо установить, чтобы начать кодирование. Вы можете найти требования для каждой платформы здесь:

Последовательность выполнения#

Application Logic System Unigine имеет три основных логических концепции:

  • System logic - логика приложения. Вы можете реализовать свою логику, которая будет выполняться в течение жизненного цикла приложения. Пользовательская логика может быть помещена в файл системного скрипта ( с использованием только UnigineScript API ) или вы можете унаследовать класс SystemLogic и реализовать свою логику ( API C ++ и C # ).

    Файл системного скрипта UnigineScript unigine.usc создается автоматически в папке вашего проекта. Когда вы создаете новый проект C ++ / C # , он уже унаследовал класс системной логики с реализованными методами для размещения кода вашей логики внутри.

  • World logic - логика мира - сюда следует поместить логику виртуальной сцены . Логика вступает в силу, когда мир загружен. Вы можете поместить свою логику в файл world script ( используя только UnigineScript API ) или унаследовать класс WorldLogic и реализовать свою логику ( API C ++ и C # ).

    Файл сценария мира *.usc автоматически создается с новым миром и имеет имя вашего проекта. Когда вы создаете новый проект C ++ / C # , он уже унаследовал мировой логический класс с реализованными методами для помещения вашего логического кода внутрь.

  • Editor logic - этот компонент следует использовать в случае, если вам нужен собственный редактор. В нем реализовано больше методов, дающих вам четкое представление о текущих событиях Engine (создана нода, удалено свойство, изменен материал и т.д.). Вы можете унаследовать свой класс от класса EditorLogic и реализовать свою логику на C++ или C#.
    Логика UnigineScript по умолчанию для Редактора загружается из файла editor2/editor.usc, хранящегося внутри editor2.ung. Вы можете переопределить этот файл UnigineScript-логики, создав папку с именем editor2 внутри папки data и поместив туда файл editor.usc со следующим кодом (вы можете изменить этот скрипт, но не удаляйте существующие строки include, поскольку они необходимы для работы Редактора):

    editor.usc

    Исходный код
    #include <editor2/editor_tracker.h>
    #include <editor2/editor_video_grabber.h>
    
    int init() {
    	return 1;
    }
    
    int update() {
    	return 1;
    }
    
    int shutdown() {
    	return 1;
    }

    Когда вы создаете новый C ++ / C # проект , он уже унаследовал класс логики редактора с реализованными методами для размещения кода вашей логики внутри.

Примечание
В случае наследования классов *Logic (C++ / C#) реализованные методы будут вызываться сразу после соответствующих методов скрипта.

Внутренний код движка UNIGINE и логика приложения выполняются в заранее определенном порядке:

  1. Этап инизиализации. На этом этапе подготавливаются и инициализируются необходимые ресурсы. Как только эти ресурсы готовы к использованию, движок переходит в основной цикл.
  2. Основной цикл . Когда UNIGINE входит в основной цикл, все его действия можно разделить на три этапа, которые выполняются один за другим в цикле:
    1. Этап обновления , содержащий всю логику вашего приложения, которая выполняется каждый кадр
    2. Этап рендеринга , содержащий все операции, связанные с рендерингом, вычислениями моделирования физики и поиском пути.
    3. Этап Swap , содержащий все операции синхронизации, выполняемые для переключения между буферами.

    Этот цикл повторяется каждый кадр во время работы приложения.

  3. Этап Shutdown. Когда UNIGINE останавливает выполнение приложения, он выполняет операции, связанные с завершением работы приложения и очисткой ресурсов.

Прочтите эту статью , чтобы узнать, где разместить свой логический код.

Также прочтите статьи Execution Sequence и Logic System , чтобы узнать подробный рабочий процесс движка Unigine.

Применение логики к объектам#

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

Свойство, являющееся «материалом» для логики приложения, представляет собой набор связанных с логикой параметров . Например, свойства могут использоваться для указания очков здоровья персонажа или параметров материала поверхности, которые могут использоваться в физических взаимодействиях.

Узнайте, как получить доступ к узлам и ресурсам, указанным в полях параметров свойства, в соответствующей статье Доступ к узлам и файлам через свойства .

Компонентная система

Свойство и связанную с ним логику можно интегрировать с помощью Component System для расширения функциональности узлов.

В то время как свойство представляет тег для логики и предоставляет набор определяемых пользователем параметров, компонент логики объединяет узел, класс C ++, содержащий логическую реализацию, и свойство.

Основной рабочий процесс выглядит следующим образом:

  1. Наследуйте новый класс, представляющий ваш компонент, от класса ComponentBase .
  2. В заголовочном файле определите и объявите список параметров, которые будут использоваться этим компонентом. Все эти параметры со значениями по умолчанию (если они указаны) будут сохранены в специальном файле свойств.
  3. Реализуйте компонентную логику внутри определенных методов (init(), update(), render() и т. д.), которые будут вызываться соответствующими функциями основного цикла Engine .
  4. Назначьте созданное свойство узлу, чтобы придать ему желаемую функциональность.


См. пример использования в статье Использование системы компонентов C ++ .

Пересечения#

Взаимодействия между объектами можно обрабатывать с помощью Пересечений (intersections). Пересечение - это общая точка определенной области (или линии) и объекта. В Unigine есть разные методы обнаружения пересечений.

Есть три основных типа пересечений:

Примеры использования#

Есть три раздела с примерами использования:

Программный код одинаков для всех поддерживаемых платформ, разница заключается в компиляции.

Для всех этих примеров мы создаем новые проекты с помощью Project Generator . Генератор проектов создает новый мир с источником World Light и плоской сеткой.

Последнее обновление: 16.08.2024
Build: ()