Сообщение от pax
Ничего встроенного нет для этого, можешь смело идти на ассетстор искать готовые вещи.
|
Все только за даллары. От 150-400$, что сильно много для создания короткого промо-ролика бесплатной игры на Android.
С захватом видео частично проблема решена. Рендер кадров через RenderTexture с записью на диск.
Плюсы:
Фпс можно задавать любой.
Размер кадра ограничивается только видеокартой.
Не сильно тормозно.
Можно "измазать сцену жиром" и рендерить даже с 1фпс/сек и на выходе все будет хорошо.
Минусы:
Для гарантированной плавности все надо двигать и вращать в FixedUpdate используя Time.fixedDeltaTime или через Rigidbody.MovePosition и Rigidbody.MoveRotation.
Нужно иметь VirtualDub что бы создать видос из кадров при этом нужно попотеть с кодеком иначе ролик будет
очень много весить.
Нельзя сворачивать и снимать фокус с Юнити иначе получим много одинаковых кадров.

using UnityEngine;
public class Capture : MonoBehaviour {
public int frameRate = 30;
public string folder = "ScreenshotFolder";
private string realFolder = "";
public bool isRec;
private RenderTexture rt;
private Texture2D screenShot;
void Start () {
rt = new RenderTexture(Screen.width, Screen.height, 24);
screenShot = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
Time.captureFramerate = frameRate;
realFolder = folder;
int count = 1;
while (System.IO.Directory.Exists(realFolder)) {
realFolder = folder + count;
count++;
}
System.IO.Directory.CreateDirectory(realFolder);
}
void LateUpdate() {
if (isRec) {
string name = string.Format("{0}/shot {1:D04}.png", realFolder, Time.frameCount);
Screenshot();
byte[] bytes = screenShot.EncodeToPNG();
System.IO.File.WriteAllBytes(name, bytes);
}
}
private void Screenshot() {
Camera.main.targetTexture = rt;
Camera.main.Render();
RenderTexture.active = rt;
screenShot.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
Camera.main.targetTexture = null;
RenderTexture.active = null;
}
}
Если еще нужно будет делать монтаж видео, то получается весьма геморно и возможно потеря качества при перегоне из кадров во временное видео. Так же предпросмотр полученных кадров например в VirtualDub требует мощный проц(?) иначе видео будет рывками.
Может знатоки напишут код где кадры будут сохранятся сразу в видео файл хотя бы без сжатия? Ну или подскажите по каким словам гуглить это дело...
С сохранением звука вроде бы проблем не должно возникнуть, но из за покадрового рендера добавляется еще геморой со сведением звука.