Unity 6.3
0 онлайн 57 гостей 3 в системе
Вход
Программирование в Unity Шаг 31 из 210

Частота кадров

Особый случай управления временем, когда вы хотите записать игру в виде видео. Поскольку задача сохранения изображений экрана занимает значительное время, обычная частота кадров игры снижается, и видео не отражает истинную производительность игры.

Чтобы улучшить внешний вид видео, используйте свойство 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, чтобы найти хороший баланс.

Дополнительные ресурсы