Общие рекомендацииGeneral best practices

Ниже приведен ряд общих рекомендаций, которые мы советуем соблюдать всем разработчикам при создании проектов Unreal Engine для смешанной реальности.The following are some general best practices we recommend all developers follow when creating an Unreal Engine project for Mixed Reality.

КонструкторыConstructors

Если вам нужен аналог конструктора для схем, используйте скрипт конструирования Unreal.If you need the equivalent of a "constructor" in blueprints, use Unreals' construction script. Основное его преимущество по сравнению с событиями BeginPlay заключается в том, что скрипт конструктора также выполняется внутри редактора.The primary advantage over using "BeginPlay" events is the constructor script runs in the "editor" as well. В большинстве случаев значения могут кэшироваться прямо при запуске или даже во время компиляции.Most of the time the values can be cached right at the start or even at compile time.

Примечание

Дополнительные сведения о скриптах конструировании см. в обзоре расширений для редактора.You can find more supporting information for Construction scripts in our editor extensions overview.

Трехмерные кнопки и текстуры3D buttons and textures

При создании или планировании трехмерных кнопок для применения в приложениях смешанной реальности вполне логично учитывать их влияние на производительность.It's natural to think about performance when creating or planning to use 3D buttons in mixed reality applications. Но не для каждого объекта необходимо применять пространственные сетки, чтобы он воспринимался объемным.However, not everything has to be made from meshes to be perceived as 3D. Вы можете использовать объект Paper2D со специальными текстурами, чтобы получить видимость трехмерности.You have the option of using Paper2D with carefully crafted textures to get that 3D look. Этот подход особенно хорош для кнопок, которые только кажутся трехмерными, а по сути являются плоским изображением, нанесенным на объект Quad.This works really well for buttons that "seem" 3D, but are just photoshopped images on a quad. Более сложная версия такого объекта называется спрайтом.A fancy version of these is called a sprite.

ВариантыVariants

Используйте варианты Unreal в тех случаях, когда вы во время выполнения создаете сцену с несколькими конфигурациями объектов.Use Unreal Variants in scenarios where you're creating a scene with multiple object configurations at runtime. Варианты могут определять изменения для материалов или сеток.Variations can include changing materials or meshes.

АнимацияAnimation

Воспользуйтесь преимуществами компонента сплайн (не путайте его с компонентом "сетка" в сплайне) и узлов временной шкалы, если вам нужно создать много анимированных элементов с возможностью взаимодействия.Take advantage of the Spline component (not the Spline "Mesh" Component) and Timeline nodes if you're creating lots of "interactable animations".

КоммуникацииCommunications

Используйте схему уровня, если возникают проблемы с динамическим поиском объектов или слишком велика нагрузка на механизмы взаимодействия между несколькими субъектами и схемами.Use a Level Blueprint if you're having trouble dynamically finding objects or using too much bandwidth to communicate between multiple actors and blueprints. Не забывайте, что Unreal Engine 4 отличается от Unity и не требует включать все содержимое в компоненты.Remember, Unreal Engine 4 isn't like Unity, not everything has to be inside a component. Схемы уровней — это вполне допустимый и даже рекомендуемый подход, позволяющий упростить обмен данными между несколькими субъектами.Level Blueprints are a perfectly valid and recommended way of simplifying the communication between multiple actors. Можно даже кэшировать ссылки на объекты при запуске сцены, используя событие OnBeginPlay в схеме уровня.Object references can even be "cached" at startup in the Level Blueprint's OnBeginPlay.

Глобальное состояниеGlobal state

Вам часто придется хранить состояние для конкретного уровня, например текущие результаты, данные об уровне и отдельных игроках, или что-то еще, что нельзя привязать к конкретному объекту.You'll often need to store level-specific state like score, level data, player-specific information, or anything else that doesn't quite belong to a particular object. Не забывайте о возможностях GameMode.Don't overlook the GameMode. Большинство разработчиков не подозревают об этой возможности, но GameMode можно создавать отдельно для каждого уровня, чтобы хранить относящиеся к этому уровню данные.Most people forget that it exists, but the GameMode can be created per level, and contain data specific to each level.

Оптимизация схемOptimizing Blueprints

Если ваши схемы работают слишком медленно, не спешите сразу писать новый код на C++, а попробуйте сделать их более "родными" для Unreal.If you're finding your blueprints to be too slow, let Unreal "nativize" your blueprints before resorting to rewriting the code in c++. Попробуйте применить автоматический механизм нативизации, прежде чем создавать собственное решение.Try using the automatic nativization before creating your own custom solution.

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