Частота кадров
Особый случай управления временем, когда вы хотите записать игру в виде видео. Поскольку задача сохранения изображений экрана занимает значительное время, обычная частота кадров игры снижается, и видео не отражает истинную производительность игры.
Чтобы улучшить внешний вид видео, используйте свойство Time.captureFramerate. Значение по умолчанию свойства 0, для незаписываемого геймплея. Когда вы устанавливаете значение свойства в любое другое значение, кроме нуля, время игры замедляется и обновления кадров выпускаются с точным регулярным интервалом для целей записи. Интервал между кадрами равен 1 / Time.captureFramerate, так что если вы устанавливаете значение 5.0, то обновления происходят каждые пятые секунды.
При эффективном снижении требований к частоте кадров у вас есть время в функциях Update или LateUpdate для сохранения скриншотов или выполнения других действий. Следующий пример кода демонстрирует это:
//C# script example
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
// Capture frames as a screenshot sequence. Images are
// stored as PNG files in a folder - these can be combined into
// a movie using image utility software (eg, QuickTime Pro).
// The folder to contain our screenshots.
// If the folder exists we will append numbers to create an empty folder.
string folder = "ScreenshotFolder";
int frameRate = 25;
void Start () {
// Set the playback frame rate (real time will not relate to game time after this).
Time.captureFramerate = frameRate;
// Create the folder
System.IO.Directory.CreateDirectory(folder);
}
// Use LateUpdate to capture the screen after all other updates have been processed.
void LateUpdate()
{
// Append filename to folder name (format is '0005 shot.png"')
string name = string.Format("{0}/{1:D04} shot.png", folder, Time.frameCount );
// Capture the screenshot to the specified file.
ScreenCapture.CaptureScreenshot(name);
}
}
Использование этого метода улучшает видео, но может сделать игру намного труднее играть. Попробуйте различные значения Time.captureFramerate, чтобы найти хороший баланс.