This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
VR Development
Двойная точность координат
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
Учебные материалы

Unigine Language Object Notation (ULON)

ULON (Unigine Language Object Notation) is a universal format used in UNIGINE to describe complex structures similar to classes in Object-Oriented Programming. Landscape Terrain brushes as well as some of UNIGINE built-in materials are described using ULON. ULON (Unigine Language Object Notation) - это универсальный формат, используемый в UNIGINE для описания сложных структур, подобных классам в объектно-ориентированном программировании. Кисти Landscape Terrain, а также некоторые из встроенных материалов UNIGINE описываются с помощью ULON.

The Engine supports loading and parsing files containing ULON-declarations, but does not support saving ULON-based structures to a file as such declarations are treated more like source code. Движок поддерживает загрузку и анализ файлов, содержащих объявления ULON, но не поддерживает сохранение структур на основе ULON в файл, поскольку такие объявления обрабатываются больше как исходный код.

ULON Description Example Пример описания ULON

ULON Description Example

See AlsoСмотрите также#

NodesУзлы#

The basic element (building brick) of ULON is called a node. Each node has a type, a name, and a value.Базовый элемент ("кирпичик") ULON называется узлом (node). У каждого узла есть тип (type), имя (name) и значение (value).

The following construct is used to declare a node: Для объявления узла используется следующая конструкция:

ULON Node Declaration

Both node name and type are written as strings:И узел name , и type записываются в виде строк:

  • either a quoted string with standard escape characters, либо строка в кавычках со стандартными escape-символами,
  • or a bare word, beginning with a lower case letter, containing only letters, digits, and underscores "_". или простое слово , начинающееся со строчной буквы, содержащее только буквы, цифры и символы подчеркивания "_".

Here is an example:Вот пример:

Исходный код
"Node Type" "node name" = node_value
NodeType node_name1 = node_value

Node declarations can be nested, thus forming a hierarchy. So a node can have a parent and an unlimited number children.

Исходный код
Node parent
{
	Node child_0
	Node child_1
	{
		Node child_2
		Node child_3
	}
}
Объявления узлов могут быть вложенными, образуя иерархию. Таким образом, у узла может быть родитель и неограниченное количество дочерних элементов.

Исходный код
Node parent
{
	Node child_0
	Node child_1
	{
		Node child_2
		Node child_3
	}
}

ValuesЗначения#

ULON node values can be of the following types:Значения узлов ULON могут быть следующих типов:

  • Boolean
    Node my_node = true
    Boolean
    Node my_node = true
  • Integer number
    Node my_node = 1234
    Целое число
    Node my_node = 1234
  • Floating-point number
    Node my_node = 3.1459
    Число с плавающей запятой
    Node my_node = 3.1459
  • String
    • Quoted string with standard escape characters:
      Node node = "word word"
      Quoted string with standard escape characters:
      Node node = "word word"
    • Bare word, beginning with a lower case letter, containing only letters, digits, and underscores "_":
      Node node = word1_word2
      Bare word, beginning with a lower case letter, containing only letters, digits, and underscores "_":
      Node node = word1_word2
    • Heredoc string enclosed in #{ ... #}. This type can be used for code fragments (e.g., shader code embedded into material description):
      Node my_node = #{C++ C# USC HLSL GLSL USSL#}
      Heredoc string enclosed in #{ ... #}. This type can be used for code fragments (e.g., shader code embedded into material description):
      Node my_node = #{C++ C# USC HLSL GLSL USSL#}
    Quoted string with standard escape characters:
    Node node = "word word"Bare word, beginning with a lower case letter, containing only letters, digits, and underscores "_":
    Node node = word1_word2 Heredoc string enclosed in #{ ... #}. This type can be used for code fragments (e.g., shader code embedded into material description):
    Node my_node = #{C++ C# USC HLSL GLSL USSL#}
    String
    • Quoted string with standard escape characters:
      Node node = "word word"
      Строка в кавычках со стандартными escape-символами:
      Node node = "word word"
    • Bare word, beginning with a lower case letter, containing only letters, digits, and underscores "_":
      Node node = word1_word2
      Простое слово, начинающееся со строчной буквы, содержащее только буквы, цифры и символы подчеркивания "_":
      Node node = word1_word2
    • Heredoc string enclosed in #{ ... #}. This type can be used for code fragments (e.g., shader code embedded into material description):
      Node my_node = #{C++ C# USC HLSL GLSL USSL#}
      Строка Heredoc, заключенная в #{ ... #}. Этот тип можно использовать для фрагментов кода (например, кода шейдера, встроенного в описание материала):
      Node my_node = #{C++ C# USC HLSL GLSL USSL#}
  • Array containing a finite number of integer, float, and string elements
    Node my_node = [100, 0.2, str str "str str str", #{vec4 asd = vec4_zero;#}]
    This array has the following 6 elements:
    • 100
    • 0.2
    • str
    • str
    • str str str
    • vec4 asd = vec4_zero;
    Массив , содержащий конечное число элементов integer, float и string
    Node my_node = [100, 0.2, str str "str str str", #{vec4 asd = vec4_zero;#}]
    Этот массив имеет следующие 6 элементов:
    • 100
    • 0.2
    • str
    • str
    • str str str
    • vec4 asd = vec4_zero;

ArgumentsАргументы#

ULON argument is a name - value pair (name = value). Arguments are additional parameters that can be associated with ULON nodes and used for various purposes (e.g. to define a tooltip or a title for a material parameter declaration). Arguments are enclosed in angle brackets < > and can be separated using "\t","\n","\r", as well as commas and spaces. Аргумент ULON - это пара имя - значение ( name = value ). Аргументы - это дополнительные параметры, которые могут быть связаны с узлами ULON и использоваться для различных целей (например, для определения всплывающей подсказки или заголовка для объявления параметра материала). Аргументы заключаются в угловые скобки < > и могут быть разделены с помощью "\ t", "\ n", "\ r", а также запятых и пробелов.

Example:Пример:

ULON Arguments Declaration

ConditionsУсловия#

For each node a logical condition can be specified, if the condition fails the ULON node with all its children is ignored. Thus you can dynamically build the hierarchy of ULON nodes with a great degree of flexibility. This can be useful when the contents of the node depends on certain parameters, e.g. a shader to be used is defined by the rendering pass. Для каждого узла может быть указано логическое условие, если условие не выполняется, узел ULON со всеми его дочерними элементами игнорируется. Таким образом, вы можете динамически строить иерархию узлов ULON с большой степенью гибкости. Это может быть полезно, когда содержимое узла зависит от определенных параметров, например шейдер, который будет использоваться, определяется этапом рендеринга.

Примечание
Conditions are not parsed and executed automatically, processing of conditions is the responsibility of the user of the ULON format (e.g. in case of materials UnigineScript and UUSL are used). Условия не анализируются и не выполняются автоматически, обработка условий является обязанностью пользователя формата ULON (например, в случае использования материалов UnigineScript и UUSL ) .

Conditions are specified after the node's name, starting with the if keyword, the condition itself is enclosed in brackets [ ... ].Условия указываются после имени узла, начиная с ключевого слова if, само условие заключено в скобки [ ... ].

Condition of the parent node is added to the condition of the child: (parent_conditon) && (child_conditon) К условию дочернего узла добавляется условие родительского узла: (parent_conditon) && (child_conditon)

Example: Пример:

Исходный код
Node parent if[var1 == 10 || var1 == 5]
{
	Node child_0  if[var2 == 3]
	Node child_1  if[var2 == 4]
	{
		Node child_2 if[var3 != 11]
		ode child_3 if[var3 != 25]
	}
}

The resulting conditions for each node are as follows:Итоговые условия для каждого узла следующие:

  • parent condition: (var1 == 10 || var1 == 5)
  • child_0 condition: (var1 == 10 || var1 == 5) && (var2 == 3)
  • child_1 condition: (var1 == 10 || var1 == 5) && (var2 == 4)
  • child_2 condition: (var1 == 10 || var1 == 5) && (var2 == 4) && (var3 != 11)
  • child_3 condition: (var1 == 10 || var1 == 5) && (var2 == 4) && (var3 != 25)

CommentsКомментарии#

Adding comments make object declaration easier to understand, especially if the object is a complex one. The following types of comments are supported: Добавление комментариев упрощает понимание объявления объекта, особенно если объект сложный. Поддерживаются следующие типы комментариев ОС:

  • single-line comments starting with "//":
    // This is a single-line comment
    однострочные комментарии, начинающиеся с "//":
    // This is a single-line comment
  • multi-line comments enclosed within "/*" and "*/":
    /* This is
    a multi-line
    comment */
    многострочные комментарии, заключенные в "/*" и "*/":
    / * Это
    многострочный
    комментарий * /
Последнее обновление: 19.12.2023
Build: ()