Works in Unreal Engine 5.0 to 5.8. Updated November 2026.
Quick answer: a Blueprint used a variable that points to nothing (None). Unreal tells you which one.
- Read the error: the property name is the empty variable, and Node and Blueprint tell you where it was used.
- Find where that variable is supposed to be set. It never was, it was set too late, or the object was destroyed.
- Set it in the right place (usually Event BeginPlay), or pick it in the Details panel if it’s an instance-editable variable.
- Where the object can legitimately be missing, check it with an Is Valid node before using it.
The error
Blueprint Runtime Error: "Accessed None trying to read property MyDoor".
Node: Open Door Graph: EventGraph Function: Execute Ubergraph BP Player Blueprint: BP_Player
It appears in the Message Log after you stop Play. The game keeps running, but the node that failed did nothing.
Step 1: Read what the error tells you
| Part | Meaning |
|---|---|
property MyDoor | The variable that was empty |
Node: Open Door | The node that tried to use it |
Blueprint: BP_Player | The Blueprint to open |
Click the blue link in the Message Log to jump straight to the node.
Step 2: Find out why it’s empty
These are the usual causes, most common first:
| Cause | Fix |
|---|---|
| The variable was never set | Set it, for example from Get Actor Of Class or a Cast in BeginPlay |
| It’s an instance-editable variable left empty in the level | Select the actor in the level and pick the object in the Details panel |
| It’s used before it’s set (another actor’s BeginPlay runs first) | Set it where it’s used, or delay the use until it exists |
| A Cast failed and you used its result anyway | Connect the Cast Failed pin, or check why the object isn’t that class |
| The actor or widget was destroyed or removed | Check with Is Valid before using it |
| A widget reference was never stored after Create Widget | Promote the Create Widget return value to a variable |
Step 3: Guard objects that can be missing
Some objects come and go: a pickup that was collected, an enemy that died, a player that hasn’t spawned yet. For those, use Is Valid (or right-click the getter and choose Convert to Validated Get) and only continue on Is Valid.
Don’t wrap everything in Is Valid to hide the error. If a variable should always be set, an Is Valid check only hides the real bug: it was never set.
In C++
The same problem in C++ is a null pointer, and it crashes instead of logging. Check pointers that can legitimately be null:
if (IsValid(MyDoor))
{
MyDoor->Open();
}
FAQ
Why does it only happen sometimes? Usually an order problem: the variable is set in another actor’s BeginPlay, and which one runs first can change.
It happens in a packaged game but not in the editor. Load order and timing differ in a packaged build. Set references where they’re used instead of relying on another actor setting them first.
Can I turn the message off? You can, but the node still fails silently. Fix the reference instead.