You've decided to migrate from Unreal Engine to Unity. Maybe it's the iteration speed. Maybe it's the team size. Maybe it's the C++ compile times. Whatever the reason, you need a plan — not vague advice, but a week-by-week timeline with realistic expectations.
TL;DR: Migrating a mid-sized Unreal project to Unity takes roughly 12 weeks: 2 weeks auditing, 2 weeks setting up the Unity project, 4 weeks translating core systems (player controller, save/load, AI, UI), 2 weeks rebuilding the art pipeline (meshes and audio transfer easily, materials and particles must be rebuilt), and 2 weeks for polish and testing. Blueprints have zero transferability and must be rewritten as C# scripts.
This guide is based on migrating a mid-sized project (50-100 Blueprints, 500+ assets, 3-5 core systems). Scale the timeline proportionally for your project.
Before starting: Read our complete Unreal-to-Unity Migration Guide for concept-by-concept translations. This article focuses on project management — when to do what.
Week 1-2: Audit Your Unreal Project
Don't start writing Unity code yet. Spend the first two weeks creating a complete inventory of what you're migrating. Open every Blueprint, every system, every content folder. Document everything.
- Catalog all Blueprints — List every Blueprint class, its parent class, and its purpose. Mark which ones are pure data (→ ScriptableObject), which are gameplay logic (→ MonoBehaviour), and which are utility (→ static C# class).
- Map your C++ classes — If you have custom C++, document the public API. These need direct C# translations.
- List all plugins and Marketplace assets — Check if each has a Unity equivalent. Some (Wwise, FMOD) have direct Unity versions. Others (Gameplay Ability System) need custom replacements.
- Inventory art assets — FBX meshes, textures (PNG/TGA), and audio (WAV/OGG) transfer directly. Materials, Niagara effects, and Blueprinted animations do not.
- Document your build pipeline — Target platforms, build configurations, CI/CD setup. You'll recreate these in Unity.
Week 3-4: Set Up the Unity Project
Create a clean Unity project with proper architecture from day one. Don't just start throwing scripts in.
// Recommended folder structure for migrated projects
// Assets/
// _Project/
// Scripts/
// Core/ ← GameManager, SaveSystem, AudioManager
// Gameplay/ ← PlayerController, EnemyAI, Weapons
// UI/ ← HUDController, MenuManager
// Data/ ← ScriptableObject definitions
// Prefabs/
// ScriptableObjects/
// Materials/
// Textures/
// Audio/
// Scenes/Install the packages you'll need: TextMeshPro (UI text), Cinemachine (cameras), Input System (modern input), and any platform-specific SDKs. Our ScriptableObjects guide covers the data architecture patterns that replace Unreal's DataAsset/DataTable system.
Week 5-8: Core Systems Translation
This is the bulk of the work. Translate your game systems one at a time, starting with the most foundational and working up to the most dependent.
- Game state management — Translate your GameMode/GameState to a Unity GameManager singleton. Our Singleton pattern handles the boilerplate.
- Player controller — Rewrite movement, input, and camera control in C#. This is usually the first thing that needs to "feel right." Use our 2D or 3D controller as a starting point.
- Save/Load — Replace USaveGame with JSON serialization. Our Save System handles multiple slots and auto-save.
- AI systems — Behavior Trees need rewriting. Unity's native AI (NavMesh) covers pathfinding. State machines handle decision-making — see our State Machine system.
- UI — Rebuild with Unity's UI Toolkit or Canvas system. UMG widgets → Unity UI components. This takes longer than expected.
- Inventory/Dialogue/Quest — These are self-contained systems. Translate them last. Or use our pre-built Inventory and Dialogue systems.
System Translation Map
| Unreal System | Unity Equivalent |
|---|---|
GameMode / GameState | GameManager (Singleton MonoBehaviour) |
PlayerController + Pawn | MonoBehaviour on Player GameObject |
USaveGame | JsonUtility + File.WriteAllText |
UDataAsset / DataTable | ScriptableObject |
Gameplay Ability System | Custom C# (no direct equivalent) |
Behavior Tree (built-in) | Custom State Machine or 3rd party |
UMG Widgets | Canvas UI or UI Toolkit |
Niagara Particles | VFX Graph or Particle System |
Material Editor | Shader Graph |
Week 9-10: Art Pipeline
Good news: most art assets transfer with minimal effort. Bad news: materials don't.
- Meshes (FBX/OBJ) — Drop them in. Unity imports FBX natively with materials, bones, and animations. Check scale (Unreal uses cm, Unity uses meters by default).
- Textures (PNG/TGA/PSD) — Drop them in. Adjust compression settings per platform in Unity's import settings.
- Audio (WAV/OGG) — Drop them in. Adjust import settings for streaming vs. preloaded.
- Materials — Must be rebuilt. Unreal Material Editor graphs → Unity Shader Graph. Physically-based materials translate well conceptually (albedo, normal, metallic/roughness) but need manual recreation.
- Animations — FBX animations transfer. Blend Trees and state machines need rebuilding in Unity's Animator Controller. Animation Blueprints have no direct equivalent — use Animator + C# scripts.
- Particle effects — Must be rebuilt from scratch. Niagara → VFX Graph (GPU) or Particle System (CPU). This is often the most time-consuming art task.
Week 11-12: Polish and Testing
The final stretch. Platform builds, performance profiling, and all the small things that make a game feel finished.
- Platform builds — Configure Build Settings for each target platform. Test on actual hardware, not just the editor.
- Performance profiling — Use Unity Profiler to find bottlenecks. Common issues: too many Draw Calls (use batching), GC spikes (use object pooling), physics overhead (simplify colliders).
- Input testing — Verify controller support, rebinding, and platform-specific input behaviors.
- Build size optimization — Strip unused assets, compress textures, set up Addressables for large projects.
- CI/CD setup — Configure Unity Cloud Build or GitHub Actions for automated builds.
What You Can't Migrate
Let's be honest about what doesn't transfer and needs complete rebuilding:
- Blueprints — Zero transferability. Every Blueprint must be rewritten as C# scripts. There is no converter.
- Custom C++ engine modifications — If you've modified Unreal's source, those changes need equivalent Unity solutions (often plugins or packages).
- Marketplace plugin logic — Paid Unreal plugins don't have Unity versions. You'll need Unity Asset Store alternatives or custom code.
- Niagara effects — Completely different system. Effects must be rebuilt in VFX Graph.
- Level streaming logic — World Partition and Level Streaming → Unity Addressables and Scene Management. Different paradigm, different API.
- Online subsystem integrations — Steam, Epic Online Services, etc. need Unity-specific SDK integrations (often available but different APIs).
Effort Estimates by Feature Type
Migration Effort Estimates
| Feature Type | Estimated Effort | Note |
|---|---|---|
Core gameplay scripts | 1-2 weeks | Largest effort |
UI system | 1-2 weeks | Frequently underestimated |
Art assets (mesh/tex/audio) | 2-3 days | Mostly drag-and-drop |
Materials/Shaders | 3-5 days | Manual rebuild |
Particle effects | 3-5 days | Complete rebuild |
AI/Behavior Trees | 1 week | Different paradigm |
Save/Load system | 1-2 days | Simpler in Unity |
Networking/Multiplayer | 2-4 weeks | Biggest wildcard |
For detailed concept-by-concept translations, work through our 4-chapter Migration Guide. Start with Chapter 1: Concepts & Naming to build your mental model.