Cursor System
The Cursor System lets you swap the cursor texture as the camera changes state - for example, showing a pan cursor when the player starts panning, or an edge-scroll arrow when the cursor reaches the screen edge.
All three controllers support the cursor system. The Simulation Camera demonstrates the widest range of cursor state changes and is the best reference for a fully configured setup.
If you don't want to use this, simply don't assign the cursors in the camera inspector.
Architecture
The cursor system is built on a ScriptableObject architecture. Each cursor state is represented by a CursorStateSO ScriptableObject, which holds the cursor texture and other relevant data. The active cursor is set via a ActiveCursorStateSO singleton scriptable object.
Creating Cursor Assets
Right-click in the Project window and choose:
Create > Parallel Cascades > Camera Controllers > ...
Single Cursor State
SingleCursorStateSO is the default cursor state. It displays one fixed texture. Leaving the texture field empty will fall back to the system default cursor.
Create via: Create > Parallel Cascades > Camera Controllers > Single Cursor State SO
Directional Cursor State
DirectionalCursorStateSO (created as Edge Scroll Cursor State SO) holds up to eight cursor textures - one for each cardinal and diagonal direction (S, N, E, W, SE, SW, NE, NW). The camera controller switches between them automatically as the cursor moves toward different screen edges during edge scrolling.
Create via: Create > Parallel Cascades > Camera Controllers > Edge Scroll Cursor State SO
Hidden Cursor State
HiddenCursorStateSO hides the cursor and confines it to the window. When the camera exits this state the cursor is made visible again and warped back to the position it was at when the state was entered. This is used during mouse-drag panning, where the cursor should not be visible or able to leave the window.
Create via: Create > Parallel Cascades > Camera Controllers > Hidden Cursor State SO
Over UI Cursor State
OverUICursorState is a special state that signals to the camera controller that the cursor is over a UI element, suspending all camera input for that frame. It extends SingleCursorStateSO so a cursor texture can optionally be assigned. See Cursor Over UI Detection for full setup instructions.
Create via: Create > Parallel Cascades > Camera Controllers > Over UI Cursor State SO
Cursor Color Variable
CursorColorVariable is a global ScriptableObject singleton that holds a single Color value. Any cursor state that references it will have its texture tinted by that color at runtime. This lets you change the tint of all cursors at once from a single asset - useful for theming or accessibility options.
Create via: Create > Parallel Cascades > Camera Controllers > Cursor Color Variable
Assign the same CursorColorVariable asset to every cursor state that should be affected by the global tint.
Cursor Texture Guidelines
This uses Unity's SetCursor() hardware cursor API.
Cursor textures have to be 32x32 pixels, mipmaps disable, read/write enabled, alphaIsTransparency enabled and texture format RGBA32
In SingleCursorStateSO you can assign any cursor texture to it, or leave it empty to keep the system default.