Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+666новых вакансий за сутки·52 265вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 686
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 394 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python5 973
  • Облачные технологии4 523
  • QA вакансии1 689
  • Android1 143
  • Инженер данных788
  • Продакт-менеджер308

Разработка

  • iOS1 093
  • Backend вакансии1 020
  • Fullstack вакансии448
  • AI вакансии378
  • Frontend вакансии369
  • Mobile вакансии27

По стеку

  • Go3 345
  • Java2 037
  • Kotlin908
  • Node.js746
  • Rust492
  • .NET481
  • PHP278
  • C++213
  • C#199

DevOps и инфраструктура

  • Kubernetes2 562
  • Linux-инфраструктура2 030
  • DevOps вакансии1 855
  • Terraform / IaC1 548
  • CI/CD876
  • Мониторинг и Observability709
  • SRE229
  • Кибербезопасность40

Аналитика и данные

  • Аналитик данных479
  • Data Scientist443
  • Бизнес-аналитик342
  • Системный аналитик50

Другие направления

  • Проджект-менеджер107
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США24 039
  • Вакансии в Европе9 373
  • Работа в России2 968
  • Вакансии в Канаде2 114

По формату

  • Удалённые вакансии41 595
  • Релокация в США24 039
  • Гибридная работа5 209
  • Офисная работа3 834

По уровню

  • Senior вакансии22 591
  • Middle вакансии12 174
  • Junior вакансии4 013

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise81 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify17 вакансий
  • Celonis14 вакансий
  • UiPath13 вакансий
  • Adyen9 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Unreal EngineВсе вопросы
Unreal EngineMiddleТеория

Что такое Data Asset в Unreal Engine и когда использовать его вместо struct?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Data Asset — это UObject-наследник с UPROPERTY-полями, сохраняемый как отдельный asset в контент-браузере; struct не имеет identity, не может иметь ссылки и не редактируется как самостоятельный файл.

Создание Data Asset в C++

// WeaponData.h
#pragma once
#include "Engine/DataAsset.h"
#include "WeaponData.generated.h"

UCLASS(BlueprintType)
class MYGAME_API UWeaponData : public UPrimaryDataAsset
{
    GENERATED_BODY()
public:
    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Stats")
    float Damage = 25.f;

    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Stats")
    float FireRate = 0.1f;

    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Visuals")
    TSoftObjectPtr<USkeletalMesh> Mesh;

    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Audio")
    TSoftObjectPtr<USoundBase> FireSound;

    // Обязательно для Asset Manager
    virtual FPrimaryAssetId GetPrimaryAssetId() const override
    {
        return FPrimaryAssetId(TEXT("WeaponData"), GetFName());
    }
};

Что такое Data Asset

UDataAsset — базовый класс Unreal Engine для объектов-данных, которые сохраняются как отдельные .uasset-файлы в контент-браузере. Они поддерживают стандартный UE-пайплайн: ссылки через TSoftObjectPtr, асинхронная загрузка через Asset Manager, Blueprint-редактирование и наследование.

Когда использовать Data Asset

  • Конфигурация оружия, предметов, NPC — данные, которые дизайнеры правят независимо.
  • Нужна ссылка на конкретный экземпляр (Asset Reference) — например, иконка предмета, звук, скелетная меш.
  • Данные должны быть загружены асинхронно через UAssetManager.
  • Нужно наследование: UWeaponData → URifleData.

Когда использовать struct

  • Данные — только значения, без asset-ссылок и идентификатора.
  • Передача параметров внутри одной системы (не нужно сохранять в контенте).
  • Встроенные данные внутри другого объекта (поле в DataTable, параметр функции).

Регистрация в Asset Manager (DefaultGame.ini)

[/Script/Engine.AssetManagerSettings]
+PrimaryAssetTypesToScan=(
    PrimaryAssetType="WeaponData",
    AssetBaseClass="/Script/MyGame.WeaponData",
    bHasBlueprintClasses=False,
    Directories=((Path="/Game/Data/Weapons"))
)

Асинхронная загрузка через Asset Manager

UAssetManager& AM = UAssetManager::Get();
FPrimaryAssetId WeaponId(TEXT("WeaponData"), TEXT("Rifle_AK47"));

TArray<FName> Bundles;
FStreamableDelegate Delegate = FStreamableDelegate::CreateUObject(
    this, &AMyCharacter::OnWeaponLoaded, WeaponId);
AM.LoadPrimaryAsset(WeaponId, Bundles, Delegate);

void AMyCharacter::OnWeaponLoaded(FPrimaryAssetId AssetId)
{
    UWeaponData* Data = Cast<UWeaponData>(
        UAssetManager::Get().GetPrimaryAssetObject(AssetId));
    if (Data) { /* применяем данные */ }
}

Подводные камни

  • UDataAsset vs UPrimaryDataAsset: только UPrimaryDataAsset поддерживает Asset Manager и bundle-загрузку; UDataAsset — просто UObject, без GetPrimaryAssetId().
  • Hard reference вместо TSoftObjectPtr: прямая ссылка USkeletalMesh* в Data Asset грузит меш сразу при загрузке самого asset, раздувая память.
  • Отсутствие PrimaryAssetType в DefaultGame.ini: Asset Manager не найдёт asset, метод GetPrimaryAssetId() вернёт Invalid.
  • Изменение имени класса: переименование C++-класса Data Asset разрывает все ссылки в контенте; нужен UObjectRedirector или ручное переподключение.
  • CDO и изменяемые дефолты: Data Asset — не CDO; если несколько систем читают один asset и кто-то изменяет его поля в рантайме, изменения видны всем.
  • DataTable vs DataAsset: для табличных данных (сотни строк) DataTable + struct эффективнее, чем сотни отдельных Data Asset файлов.

Частые вопросы на собеседовании

  • В каких проектах Unreal Engine оправдан, а где он становится источником лишней сложности?
  • Что такое макросы UPROPERTY и UFUNCTION и какие параметры они поддерживают?
  • Что такое сборщик мусора (garbage collector) в Unreal Engine и как предотвратить уничтожение объектов?
  • В чём разница между GameMode, GameState, PlayerController и PlayerState?

Типичные ошибки

  • Объяснять Data Asset только по синтаксису, без жизненного цикла и стоимости.
  • Игнорировать ошибки, null/empty состояния, порядок инициализации или режим сборки.
  • Давать пример, который работает в демо, но ломается при изменении владельца ресурса.
  • Использовать макросы или specifier-и наугад и забывать про UObject GC.

Что проверяет интервьюер

  • Кандидат формулирует точную модель для Data Asset, а не только определение.
  • Пример компилируем, безопасен по lifetime и соответствует версии технологии.
  • Названы trade-off, ограничения и диагностируемые симптомы ошибки.
  • Понимает границу между C++ кодом, runtime/framework metadata и editor/UI слоем.

Как вы знаете этот вопрос?

Проверить себя по теме Unreal Engine →

Источники

  • https://dev.epicgames.com/documentation/en-us/unreal-engine/data-assets-in-unreal-engine

Связанные темы

Unreal Engineasset-pipelinegameplay-architectureperformance-debugging