🧭 Lesson 1.2: The Unreal Editor for Programmers
You don't need to be an artist to use the editor, but you do need to know where your code shows up and how the editor and your source files stay in sync. This is the editor tour written for someone who thinks in classes and files.
🎯 Learning Objectives
By the end of this lesson, you will be able to:
- Identify the editor panels a programmer uses most and what each is for
- Explain how a C++ class relates to the editor's Content Browser and the Details panel
- Navigate the on-disk project layout and match folders to what you see in the editor
- Use the Output Log, Play-In-Editor (PIE), and the C++ class wizard confidently
Estimated Time: 45 minutes
Engine Version: Unreal Engine 5.8
In This Lesson
The Editor at a Glance
When you open a project, the Unreal Editor presents a default layout. As a programmer, five regions matter to you far more than the rest:
You do not have to master lighting, materials, or modeling to be productive. Your job is to write classes; the editor's job is to let you (and designers) instantiate, configure, and observe them.
Panels a Programmer Lives In
| Panel | What it is | Why you care |
|---|---|---|
| Content Browser | Browser of all assets: Blueprints, materials, levels, and your C++ classes under a "C++ Classes" folder | This is where you'll create Blueprint subclasses of your C++ classes |
| Details | Shows the editable properties of whatever is selected | Every UPROPERTY you expose appears here — this is your UI, for free |
| Outliner | The list of actors placed in the current level | Select an actor to inspect the C++ (or Blueprint) instance driving it |
| Output Log | Live stream of engine messages and your logs | Your UE_LOG and on-screen debug land here — your printf |
| Toolbar → Play | Runs the game inside the editor (PIE) | Your fastest way to test C++ behavior without packaging |
✅ Pro Tip
Enable Window → Output Log and dock it somewhere always-visible before you write any C++. You'll be reading it constantly — for your own logs and for compile/Live Coding messages.
How Code Reaches the Editor
This is the concept that trips up newcomers. When you write a C++ class and compile, the editor doesn't magically "see" your source files. Instead, a build step compiles your module into a binary (a DLL on Windows), and the editor loads that binary. Your classes then appear through the reflection system — the same bridge from Lesson 1.1.
UPROPERTYs appear in Details"]
Two practical consequences follow immediately:
- A
UCLASSyou write shows up under Content Browser → C++ Classes → [YourProject]. You can right-click it to create a Blueprint child. - A property you mark with
UPROPERTY(EditAnywhere)automatically appears in the Details panel — no UI code needed. The editor builds the widget from the type.
💡 Why this matters: "Expose it and the editor draws it" is one of Unreal's superpowers. Much of Module 2 and Module 6 is about controlling exactly how your C++ surfaces here.
The Project on Disk
The editor is a view onto a folder structure. Knowing that structure keeps you oriented, especially when things go wrong. A C++ project looks like this:
MyProject/
├── MyProject.uproject # Project descriptor (modules, plugins, engine version)
├── Config/ # .ini settings (DefaultEngine.ini, DefaultGame.ini...)
├── Content/ # All assets you see in the Content Browser (.uasset/.umap)
├── Source/ # Your C++ lives here
│ ├── MyProject/ # A game module
│ │ ├── MyProject.Build.cs # Module build rules & dependencies
│ │ ├── MyProject.h / .cpp # Module implementation
│ │ └── (your .h and .cpp files)
│ ├── MyProject.Target.cs # Build target: the game
│ └── MyProjectEditor.Target.cs # Build target: the editor
├── Plugins/ # Optional plugins (often with their own Source/)
├── Binaries/ # Compiled output (generated — not committed)
├── Intermediate/ # Build scratch (generated — safe to delete)
└── Saved/ # Logs, autosaves, config caches (generated)
📖 Two folders, two worlds
Content/ holds assets (binary .uasset files) — what you see in the Content Browser. Source/ holds code (text .h/.cpp). A Blueprint lives in Content/; a C++ class lives in Source/. They meet through the reflection system.
⚠️ Watch Out
Binaries/, Intermediate/, Saved/, and DerivedDataCache/ are all generated. Never commit them to source control, and deleting them (then regenerating) is a standard fix for corrupted builds. We'll set up a proper .gitignore in Lesson 1.3.
Play-In-Editor & the Output Log
The Play button (or Alt+P) launches Play-In-Editor — your game running inside the editor process. It's the tightest test loop you have: no packaging, no separate launch. For C++ work, PIE plus the Output Log is your debugger's front porch.
Here's the smallest possible taste of code you'll write to see something in that log — don't worry about the syntax yet, we build up to it across the module:
// Somewhere in an actor's BeginPlay(), which runs when play starts:
void AMyActor::BeginPlay()
{
Super::BeginPlay();
// This line prints to the Output Log — your first "Hello, Unreal".
UE_LOG(LogTemp, Warning, TEXT("Hello from C++! Actor: %s"), *GetName());
}
When you press Play, Hello from C++! appears in the Output Log, tagged as a warning (which makes it easy to spot in yellow). We cover UE_LOG properly in Lesson 2.6, but you'll be leaning on it from your very first class.
✅ Pro Tip
You can filter the Output Log by category and verbosity. Typing your log category name (e.g. a custom LogMyGame) into its search box hides the engine's firehose so you see only your own messages.
Hands-on Exercise & Quiz
🏋️ Exercise: Map the editor to the disk
Objective: Cement the editor ↔ filesystem relationship. If you have Unreal 5.8 installed you can do this live; if not, reason it through from Figure 2 and the tree above.
- In an open project, find Content Browser → C++ Classes. Which on-disk folder do those classes correspond to?
- Select any actor in the Outliner and look at the Details panel. Where did those editable fields come from, in C++ terms?
- Name two folders you would add to
.gitignoreand say why.
✅ Answers
- 1. The
Source/tree — C++ Classes mirror your compiled module's classes, whose source is inSource/MyProject/. - 2. From
UPROPERTY(EditAnywhere)(or similar) declarations — the editor generates each widget from the property's type and specifiers. - 3.
Binaries/,Intermediate/,Saved/,DerivedDataCache/— all generated, large, and machine-specific; committing them causes bloat and conflicts.
🎯 Quick Quiz
Question 1: A UPROPERTY(EditAnywhere) on your C++ actor shows up in which panel?
Question 2: Where does your C++ source physically live in the project?
Question 3: What does Play-In-Editor (PIE) give a C++ programmer?
Summary
🎉 Key Takeaways
- As a programmer you live mainly in the Content Browser, Details, Outliner, and Output Log, plus the Play button.
- Your code reaches the editor by being compiled into a module binary that the editor loads; the reflection system registers your classes and properties.
Content/holds binary assets;Source/holds your.h/.cpp. They meet through reflection.Binaries/,Intermediate/, andSaved/are generated — never commit them.- PIE + Output Log is your everyday test-and-observe loop.
📚 Additional Resources
🚀 What's Next?
You can find your way around. Now let's make the machine ready to compile: installing and configuring the C++ toolchain and IDE so your first build actually succeeds.
🎉 Lesson complete!
The terrain makes sense. Let's set up your tools.