Standalone Animations
Standalone Animation clips are reusable, concurrent scene sequences. They are designed for doors, lifts, indicators, UI motion, short environmental beats, rumble envelopes, and skeletal clip events that should run without taking over the scene's cutscene timeline.
Author them in View > Advanced Scene Authoring > Animations.
Visual Timeline
The Animations tab provides a ruler, playhead, zoom slider, Fit control, and a horizontal view control for long clips. Click the ruler to scrub. Click a keyframe diamond to select it, double-click an empty track row to create a default key, or drag a diamond to retime it. Creation and drag operations are integrated with scene Undo, and the timeline is read-only during Play Mode and builds.
Choose the Correct Animation System
| System | Use it for | Concurrency |
|---|---|---|
Transform Animator and TransformAnimator.* | Named transform states owned by one GameObject | Per component |
Animator and Animator.* | Imported hard-skinned FBX clips | Per component |
Standalone Animation.* | Reusable scene tracks and UI/environment motion | Up to 8 active instances |
Timeline.* | An exclusive cutscene with camera, audio, scripts, fog, or control blocking | One active cutscene |
Standalone clips do not contain camera, audio, script, or fog tracks. Put those tracks in a cutscene timeline.
Clip Settings
Each clip has a unique name, duration, playback speed, and default loop flag. Keyframe times are measured in seconds. Playback speed multiplies scene time, and PAL/NTSC runtime timing does not change the authored duration.
Track Types
| Group | Tracks |
|---|---|
| GameObject | Position, rotation, scale, enabled state |
| UI | Visibility, ProgressBar value, color, anchored position, size |
| Feedback | Rumble Small and Rumble Large |
| Skeletal | Play a named clip on a target Animator |
UI Position writes the element's anchored X/Y position. UI Size writes its
positive X/Y size. Skeletal events use the keyframe event name as the target
clip and the keyframe boolean as its loop setting.
Vector, scalar, and color tracks support Step, Linear, Ease In, Ease Out, and Ease In Out interpolation. Boolean values and skeletal events are discrete.
Concurrent Playback and Conflicts
The runtime has eight active animation slots. Animation.Play() takes the
first free slot, and the same clip may be started more than once. Active slots
are evaluated from slot 0 through slot 7.
If concurrent clips write the same property in the same frame, the higher-numbered slot deterministically wins. Allocation always uses the first free slot, so start time alone is not a priority guarantee. Prefer disjoint tracks; when a conflict is intentional, control the active set and treat the actual slot ordering as part of the scene design.
Animation.Stop("Name") stops every active instance with that clip name.
Animation.Stop() stops all standalone animations. Stopping never invokes a
completion callback.
Completion Behavior
A non-looping instance can receive an OnComplete Lua callback. It runs only
after natural playback reaches the end. Loop wraps and explicit stops do not
invoke it. A looping clip therefore never completes naturally until it is
replaced with a non-looping play.
See the standalone Animation Lua API for examples and exact call signatures.
Limits
| Resource | Limit |
|---|---|
| Clips per scene | 12 |
| Concurrent active instances | 8 |
| Tracks per clip | 12 |
| Keyframes per track | 48 |
| Keyframes across all standalone clips | 256 |
The editor and build validator reject unsupported tracks, invalid targets, non-increasing times, and content above these capacities. Use the editor preview for iteration, then verify concurrent playback and conflicts in the packaged PS1 build.