Skip to content

Custom File Type

Files in the simulator are UObject classes based on UOperatingSystemFile. When the player double-clicks a file in Explorer, the OS spawns the file’s widget and/or launches the Target Program Class.

Bundled examples:

ClassExtensionOpens with
UOperatingSystemVideoFile.mp4, etc.Video Player
UOperatingSystemAudioFile.mp3, etc.Audio Player
flowchart TB
  subgraph row1[" "]
    direction LR
    File["UOperatingSystemFile subclass"] --> Ext["Extension + IconObject"] --> Prog["TargetProgramClass"]
  end
  subgraph row2[" "]
    direction LR
    Explorer["UOperatingSystemExplorer double-click"] --> Open["On Open → launch UOperatingSystemBaseProgram"]
  end
  Explorer --> File
  File --> Open
  1. Content Browser → Blueprint Class → Operating System File
  2. Name it BP_File_MyDoc
  3. Set properties:
PropertyExample
NameMy Document (display; instance name set at runtime)
Extension.mydoc
Icon ObjectYour texture or UI material
Target Program ClassYour program Blueprint
Icon Widget ClassWBP_FileIcon (duplicate from plugin)
Widget ClassOptional preview widget

Use Construct File on your program or OS static helpers from UOperatingSystemStatics to place files in a directory.

Blueprint pattern:

Get Operating System → Get Directory by Path
→ Construct File (Class: BP_File_MyDoc, Parent Directory: …)

Override On Open on the file Blueprint to run custom logic before the target program launches.

UCLASS()
class UMyDocumentFile : public UOperatingSystemFile
{
GENERATED_BODY()
public:
UMyDocumentFile()
{
Extension = FText::FromString(TEXT(".mydoc"));
}
protected:
virtual void OnOpen() override;
};

Register Target Program Class in defaults to your UMyDocumentProgram class.

For programs that create files (like Mail or Video Player), also define:

See Video Player file and Audio Player file for full examples.