Skip to main content

What Surprised Me About Switching from Unity to Unreal

· 3 min read
Yisi Liu
Game Developer

I'd been using Unity for two years when I decided to learn Unreal Engine for the Infinite Runner project. Here's what I expected, and what actually surprised me.

What I Expected

  • A harder learning curve
  • "Better" graphics automatically
  • Everything to be different

What Actually Happened

The Actor System Is Basically a MonoBehaviour

Unity has MonoBehaviour. Unreal has AActor. Both are components attached to game objects that run every frame. The mental model transferred almost directly.

What is different: Unreal's ownership model. In Unity, game objects get destroyed and the garbage collector cleans up. In Unreal, you manage lifetime more carefully — TObjectPtr<>, weak references, and understanding when the engine owns vs. you own.

I hit my first crash because I held a raw pointer to an actor that got destroyed. Unity never taught me to think about this.

Blueprints First Was the Right Call

Every guide I read said "learn C++ first, Blueprints are a crutch." I disagree — at least for a complete beginner to Unreal.

I prototyped the entire Infinite Runner movement system in Blueprints in a week. Then I ported it to C++ over the next week. Having a working Blueprint reference made the C++ translation much cleaner — I wasn't learning the engine API and solving gameplay design problems simultaneously.

Blueprints are also excellent for tweaking values. I kept the difficulty curve tuning in Blueprints (exposed variables) so I could adjust without recompiling.

Compile Times Are Real

Unity is near-instant iteration. Unreal C++ builds take 30–120 seconds depending on change scope. This changes how you work:

  • Batch changes before compiling
  • Use hot reload where possible
  • Keep gameplay-tuning values in Blueprints or DataAssets so you're not compiling for value tweaks

After two weeks I stopped noticing the wait. But the first week was painful.

The Documentation Is... Different

Unity's documentation is clearly written for people learning the engine. Unreal's documentation assumes you already know what you're looking for.

The community around Unreal is great, but it's weighted toward visual/Blueprint content. Finding C++ answers sometimes required reading source code or asking on the Unreal forums directly.


Six Months In

I'm comfortable in both engines now. The things that felt alien in Unreal — the actor lifecycle, the build system, the C++ conventions — are now just normal.

The bigger lesson: the fundamentals transfer. State machines, object pooling, event systems, data separation — none of that is engine-specific. Understanding why patterns work makes picking up new engines much faster.


Yisi Liu — building the Infinite Runner in Unreal Engine 5.