Quick answer: Unreal Blueprint cast on a resolved soft object pointer returning null? Soft ptr resolves to the asset; cast expects a subclass - cast to the asset's class, not the property class.
Soft ref of type UItemData; cast to UWeaponItemData. Cast fails even when the asset is a weapon.
Validate Get with class match
if (UItemData* item = SoftRef.Get()) {
if (UWeaponItemData* w = Cast<UWeaponItemData>(item)) ...
}Get resolves; Cast validates. Two-step.
Or use TSoftClassPtr
For class refs, TSoftClassPtr instead of TSoftObjectPtr. Cleaner semantics.
Audit with the type checker
Asset Audit shows real types. Cross-check expected vs actual; mismatched soft refs are the cause.
“Soft refs are typed by their declaration. Resolved assets may be subtypes.”
If you find casts on soft ref consistently failing, consider data design. Subtyping via cast is fragile; composition via interfaces is robust.