PrepBro
Профессии
PrepBro
Профессия:

Подготовка

  • Вопросы1068
  • Задачи28

Аналитика

  • hh статистика
  • Анализ резюме

Практика

  • Тестовое собеседование
  • Mock-собеседование
  • Менторы

Поддержка / отзывы

Telegram админа
Профессия:

Подготовка

  • Вопросы1068
  • Задачи28

Аналитика

  • hh статистика
  • Анализ резюме

Практика

  • Тестовое собеседование
  • Mock-собеседование
  • Менторы

Поддержка / отзывы

Telegram админа
Все 24 профессии
Android DeveloperData AnalystSystem Analyst1С DeveloperiOS DeveloperBusiness AnalystJava DeveloperData ScientistQA EngineerQA AutomationPHP BackendC/C++ BackendDevOps EngineerIT Project ManagerFrontend DeveloperNode.js BackendUnity DeveloperC# BackendProduct AnalystFlutter DeveloperPython DeveloperIT Product ManagerGo DeveloperData Engineer

© 2026 PrepBro. Все права защищены.

Telegram-бот

Задачи по Unity Developer

Реализовать систему событий (Event System)
2.0 Middle🔥 30💬 1

Решение

Зачем нужна система событий?

Система событий (Event System) — это паттерн для слабой связанности между компонентами игры. Вместо того чтобы один объект напрямую вызывал методы другого (что создаёт жёсткие зависимости), они используют события как посредников. Например, вместо прямого вызова UIManager.UpdateScore() из PlayerScript, Player опубликует событие ScoreChangedEvent, а UI подпишется на него. Это делает код более модульным, тестируемым и расширяемым.

Реализация EventManager

using UnityEngine;
using System;
using System.Collections.Generic;
Читать полностью ->
Реализовать Singleton для Unity
1.0 Junior🔥 28💬 1

Решение

Что такое Singleton в Unity?

Singleton — паттерн проектирования, который гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему. В игровых проектах Singleton используется для менеджеров (GameManager, AudioManager, UIManager и т.д.), которые должны быть уникальными и доступны из любой части кода. Правильная реализация должна быть потокобезопасной и обрабатывать специфику Unity.

Реализация Singleton<T>

using UnityEngine;
using System;
Читать полностью ->
Реализовать следование камеры за персонажем
1.0 Junior🔥 27💬 1

Решение: Следование камеры за персонажем

Архитектура

Хорошая система слежения камеры критична для комфортного геймплея. Рассмотрю оба варианта: с Cinemachine (встроенный инструмент) и ручную реализацию с Lerp.

Вариант 1: Собственная реализация (рекомендуется)

using UnityEngine;
Читать полностью ->
Реализовать систему сохранения и загрузки игры
1.7 Middle🔥 26💬 1

Решение

Архитектура системы сохранения

Хорошая система сохранения должна быть надёжной, простой в использовании и защищённой от ошибок. Я реализую трёхуровневую архитектуру: SaveData (структура), SaveManager (логика), и интеграцию с игровыми системами.

1. Структура данных SaveData

using UnityEngine;
using System;
using System.Collections.Generic;

/// <summary>Данные о позиции и ориентации</summary>
[System.Serializable]
public struct Vector3Serializable
{
    public float x, y, z;
    
    public Vector3Serializable(Vector3 v)
    {
        x = v.x;
        y = v.y;
        z = v.z;
    }
    
    public Vector3 ToVector3() => new Vector3(x, y, z);
}
Читать полностью ->
Реализовать drag and drop для UI элементов
2.0 Middle🔥 25💬 1

Решение: Система Drag and Drop для UI элементов

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

Архитектура системы

Основные компоненты:

  1. DraggableItem — базовый компонент для перетаскиваемых элементов
  2. DropZone — место, куда можно бросить элемент
  3. DragDropManager — управление всей системой
  4. ItemData — данные элемента

DraggableItem - Компонент перетаскивания

public interface IDraggable
{
    void OnBeginDrag(PointerEventData eventData);
    void OnDrag(PointerEventData eventData);
    void OnEndDrag(PointerEventData eventData);
    ItemData GetItemData();
    bool CanBeDragged();
}
Читать полностью ->
Реализовать систему прокачки персонажа
2.0 Middle🔥 24💬 1

Система прокачки и уровней персонажа

Реализую полнофункциональную систему развития персонажа с опытом, уровнями, деревом навыков, прокачкой статов и сохранением прогресса. Используется ScriptableObject конфиги и JSON сериализация.

Модель персонажа и опыта

[System.Serializable]
public class CharacterStats
{
    public int strength = 10;     // Сила - увеличивает урон и здоровье
    public int agility = 10;      // Ловкость - увеличивает защиту и скорость
    public int intelligence = 10; // Интеллект - увеличивает ману и урон магии

public int maxHealth;
    public int currentHealth;
    public int maxMana;
    public int currentMana;
    public float armor;           // Защита
    public float physicalDamage;  // Урон

public void RecalculateStats()
    {
        maxHealth = 100 + strength * 5;
        maxMana = 50 + intelligence * 3;
        armor = agility * 0.5f;
        physicalDamage = 10f + strength * 1.5f;
    }
}
Читать полностью ->
Написать код для интерполяции позиции объекта к цели
1.0 Junior🔥 24💬 1

Решение

Интерполяция позиции объекта

Основная задача: плавно передвигать объект к цели с постоянной скоростью. Есть несколько подходов: Vector3.MoveTowards (встроенный метод), Vector3.Lerp (интерполяция) или ручной расчёт. Рассмотрю оба варианта.

Вариант 1: Vector3.MoveTowards (рекомендуется)

using UnityEngine;
Читать полностью ->
Реализовать систему здоровья с UI
1.0 Junior🔥 24💬 1

Решение

Архитектура системы здоровья

Хорошая система здоровья должна быть модульной, расширяемой и событийной. Я реализую отдельные компоненты: Health (логика), HealthBar (UI), и систему брони для защиты. События позволяют другим системам реагировать на урон и смерть.

1. Компонент Health с защитой и неуязвимостью

using UnityEngine;
using System;
Читать полностью ->
Реализовать пул объектов (Object Pool)
2.2 Middle🔥 23💬 1

Решение

Что такое Object Pool?

Объектный пул — это паттерн проектирования, который переиспользует объекты вместо их постоянного создания и уничтожения. Это критически важно в Unity для оптимизации производительности, так как операции Instantiate() и Destroy() — дорогостоящие и могут вызвать сборку мусора (GC spikes). Пул особенно полезен для пуль, врагов, эффектов и других часто создаваемых объектов.

Реализация ObjectPool<T>

using System.Collections.Generic;
using UnityEngine;
Читать полностью ->
Реализовать систему патрулирования для врага
1.6 Junior🔥 21💬 1

Решение: Система патрулирования врага AI

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

Архитектура системы

Основные компоненты:

  1. PatrolPath — хранит точки патрулирования
  2. PatrolController — управляет движением между точками
  3. AnimationController — синхронизирует анимации
  4. PathVisualizer — отображение пути в редакторе

PatrolPath - Определение маршрута

[System.Serializable]
public class PatrolWaypoint
{
    public Vector3 Position { get; set; }
    public float StopDuration { get; set; } = 1f;
    public float Speed { get; set; } = 5f;
    public float WaitRadius { get; set; } = 0.5f;
}
Читать полностью ->
Реализовать простой менеджер аудио
1.6 Junior🔥 21💬 1

Решение

Архитектура AudioManager

Хороший аудио менеджер должен быть простым, гибким и эффективным. Я реализую систему с поддержкой пула AudioSource для звуковых эффектов, раздельным управлением музыкой и SFX, а также плавными кроссфейдами между треками.

Основной AudioManager

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
Читать полностью ->
Реализовать движение персонажа с плавной интерполяцией
1.0 Junior🔥 21💬 1

Решение

Подход к движению персонажа

Плавное движение от третьего лица требует координации трёх компонентов: ввода, движения и поворота. Важно использовать Time.deltaTime для независимости от FPS, Quaternion.Slerp для плавного поворота и правильное разделение логики физики (FixedUpdate) и контроля (Update). Я предоставлю решение с Rigidbody, которое более гибко для игр с физикой.

Реализация с Rigidbody

using UnityEngine;
Читать полностью ->
Реализовать конечный автомат (FSM) для ИИ врага
1.7 Middle🔥 21💬 1

Решение

Что такое FSM (Finite State Machine)?

Конечный автомат — фундаментальный паттерн для управления поведением ИИ в играх. FSM позволяет разбить сложное поведение на дискретные состояния и чётко определённые переходы между ними. Это делает код предсказуемым, легко тестируемым и расширяемым. Враг может быть в одном состоянии одновременно (Idle, Patrol, Chase или Attack), и логика переходов определяется условиями окружения.

Базовая реализация FSM

using UnityEngine;
using System;
Читать полностью ->
Реализовать систему торговли между NPC и игроком
2.3 Middle🔥 20💬 1

Trading System for RPG

Merchant System

Complete trading system with merchant inventory, buy/sell mechanics, dynamic pricing, and reputation system.

Core Components

MerchantInventory - Manages merchant stock with separate buy and sell prices. Supports limited money pool and automatic restocking.

MerchantManager - Handles buy/sell transactions with price calculations, reputation tracking, and discount application.

TradeItem - Data structure with item reference, quantity, buy price, and sell price.

ShopUI - User interface for browsing items, selecting quantities, and confirming transactions.

Features

  • Merchant inventory with independent buy/sell prices
  • Limited merchant money pool (prevents exploitation)
  • Reputation system with dynamic discounts (±5%)
  • Auto-restocking every 60 seconds
  • Transaction confirmation dialog
  • Full buy/sell support from both directions

Bonuses Implemented

Читать полностью ->
Реализовать систему волн врагов
2.0 Middle🔥 20💬 1

Wave System

Implementation

Complete wave management system with configurable enemy waves, difficulty scaling, spawn points, and UI display.

Architecture

  • WaveConfig ScriptableObject for wave definitions
  • WaveManager with State Machine (Idle, Active, Complete)
  • EnemyFactory for enemy creation with difficulty multiplier
  • WaveUI for displaying current wave and timer
  • Support for infinite mode and boss waves

Features

  • Configurable waves with different enemy types
  • Breaks between waves with timer
  • Difficulty scaling via DifficultyMultiplier
  • Multiple spawn points for variety
  • Full UI display of wave number, timer, and progress
  • Win/lose conditions
  • Infinite mode with +15% difficulty per wave
  • Boss waves with 2x difficulty boost
Читать полностью ->
Реализовать систему крафта предметов
2.0 Middle🔥 19💬 1

Система крафта предметов в Unity

Создам модульную архитектуру на основе ScriptableObject и Manager паттернов. Система должна быть гибкой, расширяемой и удобной в использовании.

Структура рецепта (ScriptableObject)

[System.Serializable]
public struct RecipeIngredient
{
    public Item item;
    public int quantity;
}

public class Recipe : ScriptableObject
{
    [SerializeField] private string recipeName;
    [SerializeField] private List<RecipeIngredient> ingredients;
    [SerializeField] private Item result;
    [SerializeField] private int resultQuantity = 1;
    [SerializeField] private float craftingTime = 5f;
    [SerializeField] private int requiredSkillLevel = 1;
    [SerializeField] private bool isUnlocked;
Читать полностью ->
Реализовать систему достижений
2.0 Middle🔥 19💬 1

Решение: Система достижений для игры

Эта задача требует создания гибкой системы достижений с различными типами отслеживания, сохранением прогресса и UI для отображения. Расскажу о полной архитектуре.

Архитектура системы

Основные компоненты:

  1. AchievementDefinition — ScriptableObject для описания
  2. AchievementType — enum типов достижений
  3. AchievementManager — основной менеджер
  4. AchievementTracker — отслеживание прогресса
  5. AchievementUI — интерфейс и уведомления

AchievementDefinition - ScriptableObject

public enum AchievementType
{
    Counter,        // Счетчик (убить 100 врагов)
    OneTime,        // Разовое событие (пройти уровень)
    Collection      // Коллекция (собрать все предметы)
}

[System.Serializable]
public class AchievementProgress
{
    public string achievementId;
    public bool unlocked = false;
    public int progress = 0;
    public System.DateTime unlockedDate;
    public float completionPercent = 0f;
}
Читать полностью ->
Реализовать систему урона с типами элементов
2.0 Middle🔥 19💬 1

Решение: Система урона с типами элементов

Эта задача требует создания гибкой системы урона с поддержкой различных элементов, сопротивлений, статус-эффектов и комбинаций. Расскажу о полной архитектуре.

Архитектура системы

Основные компоненты:

  1. DamageType — enum и конфигурация типов урона
  2. ElementalDamage — класс для хранения информации об уроне
  3. DamageCalculator — расчёт финального урона
  4. StatusEffect — система статус-эффектов
  5. Health — система здоровья с защитой

DamageType и конфигурация

public enum ElementType
{
    Physical,
    Fire,
    Ice,
    Lightning,
    Water,
    Wind,
    Earth,
    Light,
    Dark
}

public enum StatusEffect
{
    None,
    Burning,        // Огонь
    Frozen,         // Лед
    Shocked,        // Молния
    Poisoned,       // Яд
    Stunned,        // Оглушение
    Bleeding,       // Кровотечение
    Weakened        // Ослабление
}
Читать полностью ->
Реализовать систему способностей персонажа
2.0 Middle🔥 19💬 1

Решение: Система способностей для action игры

Эта задача требует создания гибкой системы способностей с различными типами, управлением ресурсами и UI-отображением кулдаунов. Расскажу о полной архитектуре.

Архитектура системы

Основные компоненты:

  1. Ability — базовый класс для всех способностей
  2. AbilityManager — управление способностями персонажа
  3. ResourceManager — управление маной/энергией
  4. AbilityUI — отображение кулдаунов и статуса

Базовый класс Ability

Читать полностью ->
Оптимизировать код: использование GetComponent в Update
2.0 Middle🔥 17💬 1

Решение

Анализ типичных проблем с производительностью

В Unity есть несколько паттернов, которые серьёзно замораживают игру. Самые частые ошибки:

1. GetComponent в Update — этот метод выполняет поиск по компонентам каждый кадр (O(n) сложность). 2. FindGameObjectsWithTag в Update — поиск по всем объектам каждый кадр очень дорог. 3. Использование строк в Animator — хеширование строк происходит каждый раз. 4. Создание Vector3 в Update — выделение памяти каждый кадр вызывает GC spikes. 5. LINQ в Update — Where, Select и другие операции создают временные массивы.

Неоптимизированный код

Читать полностью ->
Реализовать мини-карту для игры
2.2 Middle🔥 16💬 1

Решение: Система мини-карты для игры

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

Архитектура системы

Основные компоненты:

  1. MinimapCamera — отдельная камера для мини-карты
  2. MinimapRenderer — управление RenderTexture
  3. MinimapMarker — маркеры на мини-карте
  4. MinimapController — основной контроллер
  5. FogOfWar — система скрытия области (опционально)

MinimapCamera - Камера мини-карты

Читать полностью ->
Реализовать простую систему квестов
2.0 Middle🔥 16💬 1

Решение

Архитектура системы квестов

Хорошая система квестов должна быть гибкой, модульной и событийной. Я реализую: QuestData (описание), Quest (runtime), QuestManager (контроль), и QuestUI (отображение).

1. ScriptableObject для квестов

using UnityEngine;
using System.Collections.Generic;

/// <summary>Типы квестов</summary>
public enum QuestType
{
    CollectItems,    // Собрать предметы
    KillEnemies,     // Убить врагов
    ReachLocation,   // Дойти до точки
    TalkToNPC        // Поговорить с NPC
}

/// <summary>Статусы квеста</summary>
public enum QuestStatus
{
    Locked,      // Недоступен
    Active,      // В прогрессе
    Completed,   // Завершён
    Failed       // Провален
}

/// <summary>Награда за квест</summary>
[System.Serializable]
public class QuestReward
{
    public int experiencePoints = 100;
    public int gold = 50;
    public List<string> itemRewards = new List<string>();
}
Читать полностью ->
Создать игру с гравитацией - шарик прыгает между полом и потолком
1.0 Junior🔥 16💬 1

Решение: Игра с гравитацией - Flappy Bird улучшенный

Это задача требует создания динамичной игры с физикой гравитации, процедурной генерацией препятствий и интерактивным управлением. Опису полную архитектуру решения.

Архитектура системы

Основные компоненты:

  1. BallController — управление движением и гравитацией шарика
  2. LevelGenerator — процедурная генерация уровня и препятствий
  3. ObstacleManager — управление дырами в полу и потолке
  4. GameManager — логика игры и состояния
  5. UIManager — интерфейс и счёт

BallController - Физика и управление

Читать полностью ->
Создать endless runner игру
2.0 Middle🔥 15💬 1

Решение

Архитектура Endless Runner

Endless Runner требует: управления персонажем, процедурной генерации уровня, системы препятствий, монет, и скорости. Я реализую модульную архитектуру с использованием пулинга для оптимизации.

1. Менеджер игры

using UnityEngine;
using System;
using System.Collections;
Читать полностью ->
Создать игру Space Invaders
2.3 Middle🔥 15💬 1

Решение Space Invaders

Архитектура игры

Space Invaders требует координации нескольких систем: управления группой врагов, стрельбы, столкновений, UI и score. Я использую паттерны, которые были в предыдущих задачах: Object Pool для пуль, Event System для событий, и модульную архитектуру.

1. Менеджер игры и состояния

using UnityEngine;
using System;
Читать полностью ->
Создать простую quiz-игру
1.2 Junior🔥 12💬 1

Архитектура решения для Quiz-игры на Unity

Я разработал бы эту игру с использованием MVC-подхода (Model-View-Controller), что обеспечит чистую архитектуру и легкую поддержку. Проект будет состоять из нескольких ключевых компонентов.

1. Модель данных (GameData)

using System.Collections.Generic;

[System.Serializable]
public class QuizData
{
    public List<QuizLevel> levels = new List<QuizLevel>();
    public int totalScore = 0;
    public int currentLevelIndex = 0;
}

[System.Serializable]
public class QuizLevel
{
    public string word;
    public string category;
    public Difficulty difficulty;
    public int baseScore;
    public List<char> availableLetters;
}

public enum Difficulty
{
    Easy,    // Короткие слова, больше попыток
    Medium,  // Средней длины
    Hard     // Длинные слова, меньше попыток
}

2. Управление игровой логикой (GameController)

Читать полностью ->
Реализовать туториал для игры
2.0 Middle🔥 11💬 1

Решение: Система туториала для игры

Эта задача требует создания гибкой системы туториала с пошаговым обучением, подсветкой элементов и отслеживанием прогресса. Расскажу о полной архитектуре.

Архитектура системы

Основные компоненты:

  1. TutorialStep — ScriptableObject для описания шага
  2. TutorialSequence — последовательность шагов
  3. TutorialManager — основной менеджер
  4. TutorialUI — интерфейс и визуализация
  5. TutorialHighlight — подсветка элементов

TutorialStep - Описание шага

public enum TutorialStepType
{
    ShowUI,         // Показать подсказку с текстом
    HighlightUI,    // Подсветить элемент UI
    BlockInput,     // Заблокировать ввод до действия
    ShowArrow,      // Показать стрелку
    WaitForInput,   // Ждать конкретного ввода
    WaitForEvent    // Ждать события
}
Читать полностью ->
Реализовать puzzle matching game (Match-3)
2.2 Middle🔥 9💬 1

Система волн врагов для Tower Defense/Survival

Полнофункциональная система управления волнами с конфигурацией, масштабированием сложности, мультиплексированием спавна врагов и поддержкой бесконечного режима.

Структура конфигурации волны

[System.Serializable]
public struct EnemySpawnData
{
    public EnemyType enemyType;
    public int quantity;
    public float spawnInterval; // Интервал между спавном одного типа врагов
}

public class WaveConfig : ScriptableObject
{
    [SerializeField] private int waveNumber;
    [SerializeField] private List<EnemySpawnData> enemies;
    [SerializeField] private float baseDifficulty = 1f;
    [SerializeField] private bool isBossWave;
    [SerializeField] private EnemyType bossType;

public int WaveNumber => waveNumber;
    public List<EnemySpawnData> Enemies => enemies;
    public float BaseDifficulty => baseDifficulty;
    public bool IsBossWave => isBossWave;
    public EnemyType BossType => bossType;
}
Читать полностью ->