AInkPageActor) is a placeable sheet of paper that shows an
Ink Page Document. Drag it into the level from the Place Actors
panel, assign a document, and the page is there — sized in real-world centimeters and
previewed live in the viewport, without
pressing Play.
It deliberately contains no input or interaction logic. Call Next Page /
Previous Page from whatever your project already uses — a trigger volume, an
interaction component, a widget button — and implement the On … events to react. To
let the player pick the sheet up and read it in front of the camera, put an
Ink Page Reader on your player and call its Begin Reading from
your interact verb. (The bundled Ink Page Interactor wires those
calls for the demo showroom — it is a reference to read, not a component to ship.)
Placing one
1
Find it in Place Actors
Open Window → Place Actors and search for
Ink Page. Drag the result into the level.
You get a blank A4 sheet: no document is assigned yet, so the actor shows the paper it is
about to print on.2
Assign a document
Select the actor, open the Page Display component in the Details panel, and set
Document. The sheet re-fits to that document’s page size and the first page bakes
into the viewport immediately.
3
Place and orient it
Move and rotate the actor as usual. If the writing ends up sideways for the way you have
laid the sheet down, set Page Yaw on the actor rather than rotating the mesh by hand.
What it is made of
The actor is a thin wrapper around three components, all exposed as read-only properties so a Blueprint subclass can reach them:
Page Display is explicitly pointed at Page Mesh through its Target Mesh
property, so an extra mesh added in a Blueprint subclass can never win the “first mesh on
the actor” search and steal the page. For the same reason the display component’s
Procedural Paper never spawns a second
sheet here: the actor already supplies one.
The bundled page sheet is a thin two-sided slab with three material slots — Front,
Back and Edge — which is what lets a page with an
authored back show its other side with no setup: the display
component dresses the Back slot automatically, and an unauthored back shows the
front’s writing faintly mirrored through the paper, the way thin stock reads. The
Ink Page Reader’s Flip Page is how the player actually turns the
sheet over.
The actor does not tick.
Sheet sizing
How big the paper is, is not a property of the actor. It comes from the page: the document’s own size — the Page Width Cm you authored, with the height derived from the Page Size Pixels aspect ratio — multiplied by Page Scale on the Page Display component. Because there is only ever that one size, the paper can never be a different shape from the page printed on it, and the writing can never come out stretched. The actor owns only the two properties around that:
Both are editable in the Details panel and readable — but not writable — from Blueprint.
The Inkwell page sheet is a 100 cm sheet, so centimeters map straight to relative
scale: a 21 × 29.7 cm page is the sheet at
0.21 × 0.297. Sizing is re-applied on
construction, on any property edit, and whenever the display component broadcasts
On Page Size Changed — which is how a
Set Document call bringing in a differently sized document, or a Page Scale drag,
re-fits the sheet live. Page Mesh is Movable precisely so all of that also works at
runtime.
Collision
Inkwell does not override collision on this actor’s sheet. Page Mesh is created with overlap events disabled and is otherwise left on the standard Static Mesh Component defaults, which resolve to the collision authored onSM_PageSheet: a simple box
primitive on the Block All preset.
What that means in practice:
- An interaction line trace on Visibility hits the sheet. That is what makes a placed Ink Page readable out of the box — in the showroom, and from your own interaction trace.
- The sheet is also a solid blocker. A page lying on a desk is a thin box the player can walk into. The Ink Page Reader switches the whole actor’s collision off for the duration of a read for exactly this reason, so a page held at the reader’s face never bumps the player or swallows their traces.
1
Select the sheet
Select the actor in the level (or open your Blueprint subclass) and pick the Page Mesh
component in the Details / Components panel.
2
Make it query-only
Under Collision, set Collision Presets to
Custom, then Collision Enabled to
Query Only (No Physics Collision).3
Answer only the trace you use
Set every response to Ignore, then set Visibility — or whatever channel your
interaction system traces on — to Block.
That recipe is exactly what the Ink Page Display component
applies to the sheet it spawns for actors that have no mesh of their own: query-only,
object type
WorldDynamic, ignore everything, block Visibility only. If you would
rather inherit that behavior than configure it, use a bare actor with an Ink Page Display
component instead of this actor.Blueprint API
Every function forwards to the internal Ink Page Display component and behaves identically:Events and interaction hooks
All three are Blueprint-implementable events: override them in a Blueprint subclass. The
actor binds the display component’s delegate before Begin Play, so On Page Changed
also fires for the very first page drawn at game start.
Notify Interacted and Notify Focus Changed are the seam for your own interaction
system. Your code decides when the player is looking at or using the page; the actor
turns that into an event your Blueprint reacts to:
A focus-and-use flow
Subclassing it
Use a Blueprint subclass when several notes in your level should behave the same way: share the interaction reactions, the audio and the mesh once.1
Create the Blueprint
Right-click in the Content Browser → Blueprint Class, search the All Classes
picker for
Ink Page, and choose it. (The UMG widget of the same display name is not
Blueprintable, so only the actor appears here.)2
Adjust the inherited components
Select Page Mesh in the Components panel to swap in your own paper mesh or change its
collision, and Page Display to set Page Scale, Loop Pages or
Apply On Begin Play. Both are native components: their defaults are editable here and
again per placed instance.
3
Implement the events
In the Event Graph, right-click and add Event On Focus Changed, Event On
Interacted and Event On Page Changed. Wire your prompt widget, page-turn sound and
“3 / 12” label to them.
4
Drive them from your interaction system
From your interactable base class or interface, call Notify Focus Changed and
Notify Interacted on this actor. The full pattern is in the
integration guide.
5
Place it
Drag the Blueprint into the level and set Document per instance. Everything else is
inherited.
When to use it, and when not to
Use Ink Page
A loose sheet in the world — a note on a desk, a letter on a bed, a poster on a wall —
with zero setup. The mesh, the sizing and the yaw are handled for you.
Use Ink Page Display
The page belongs on something you already have: a prop, a clipboard, an existing
interactable Blueprint. Add the component to that actor; with one mesh it finds it on its
own, and with several you point Target Mesh at the right one. Or leave the actor
mesh-less and let Procedural Paper make the sheet.
Use Ink Page Stack
A physical pile of sheets for a journal or book, with real thickness and animated page
turns.
Use the Ink Page widget
The page is read on screen in UMG rather than in the world.
Next
Ink Page Display
The component doing the work inside this actor, and everything it can do on your own actors.
Integration guide
Wiring the notify hooks into an interaction system you already have.
Ink Page Reader
Snapping a placed page into the player’s view to read it — and flipping it over.