Unity Recorder’s OutputFile property accepts both relative and absolute paths, letting you drop recordings into any folder under your project root—such as a Recordings directory—simply by embedding the subfolder in the path string. citeturn1search2turn1search5 You can also drive the more granular FileNameGenerator API to specify the root (e.g. project folder) and leaf (subfolder + filename) directly. citeturn9search0turn9search1
The easiest approach is to assign a path relative to your project root directly to the recorder’s OutputFile string. citeturn1search2
movieSettings.OutputFile = "Recordings/myVideo_<Date>_<Take>";
Here, Unity resolves "Recordings/..." under your project folder and appends the proper extension. citeturn1search0
If you need an absolute path, combine Application.dataPath (which points to <project>/Assets) with your desired folder using Path.Combine. citeturn11search0turn12search0
string absolutePath = Path.Combine(Application.dataPath, "../Recordings/myVideo_<Date>_<Take>");
movieSettings.OutputFile = absolutePath;
In community discussions, users report that only relative paths (and root‐anchored absolute paths like C:\…) reliably work out of the box—making a relative "Recordings/…" path the most bulletproof choice. citeturn1search3
Under the hood, OutputFile drives a FileNameGenerator. You can configure this generator directly for finer control:
// 1. Create your Movie recorder settings
var movieSettings = ScriptableObject.CreateInstance<MovieRecorderSettings>();
// 2. Access its FileNameGenerator
var fg = movieSettings.FileNameGenerator; // citeturn9search0
// 3. Set the root to the project folder
fg.Root = OutputPath.Root.Project; // citeturn1search7turn9search0
// 4. Define the leaf as a subfolder + filename (wildcards supported)
fg.Leaf = "Recordings/myVideo_<Date>_<Take>"; // citeturn9search1
// 5. Enable and add to controller settings as usual
movieSettings.Enabled = true;
controllerSettings.AddRecorderSettings(movieSettings);
This ensures your recordings land in <ProjectRoot>/Recordings/ with dynamic naming.
Below is a self-contained snippet showing how to load existing global settings, adjust the movie recorder to drop outputs into a Recordings folder, and save the changes:
using UnityEditor.Recorder;
using UnityEditor.Recorder.Input;
// 1. Fetch or create controller settings
var settings = RecorderControllerSettings.GetGlobalSettings();
// 2. Locate an existing Movie recorder (or create a new one)
var movieSettings = settings.RecorderSettings
.OfType<MovieRecorderSettings>()
?? ScriptableObject.CreateInstance<MovieRecorderSettings>();
// 3. Configure relative output path directly
movieSettings.OutputFile = "Recordings/Session_<Date>_<Take>";
// ── OR set via FileNameGenerator ──
// var fg = movieSettings.FileNameGenerator;
// fg.Root = OutputPath.Root.Project;
// fg.Leaf = "Recordings/Session_<Date>_<Take>";
// 4. Enable and ensure it's registered
movieSettings.Enabled = true;
if (!settings.RecorderSettings.Contains(movieSettings))
settings.AddRecorderSettings(movieSettings);
// 5. Persist settings and, if open, refresh the Recorder window
var window = EditorWindow.GetWindow<RecorderWindow>();
window.SetRecorderControllerSettings(settings);
With either method, Unity will automatically create the Recordings folder under your project directory when you start your next recording session.