• ScreenCapture.CaptureScreenshot Или Application.CaptureScreenshot не могу разобраться?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    Если использовать ScreenCapture.CaptureScreenshot, то сложнее управлять процессом съёмки, в кадр могут попасть лишние слои, будут фризы при загрузке картинки обратно с диска, больше потребление памяти. Правильнее всего делать это с помощью Camera.Render и RenderTexture, при такой схеме можно включать/выключать постэффекты, проще управлять разрешением скриншота и отображать превью в интерфейсе. В нужный момент просто создаёте рендер-текстуру, втыкаете её в Camera.targetTexture, вызываете Render и возвращаете старое значение targetTexture. Всё, после этого у вас есть текстура, которую можно вывести на экран с помощью компонента RawImage.

    Чтобы сохранить текстуру на диск, её нужно сначала сконвертировать в Texture2D с помощью Texture2D.ReadPixels, а потом закодировать в нужный формат вызвав ImageConversion.EncodeToPNG или ImageConversion.EncodeToJPG. Из коробки Unity умеет сохранять картинки на мобилках только в Application.persistentDataPath, для доступа к галерее нужен плагин, в AssetStore их полно, некоторые умеют даже сохранять сразу рендер-текстуру.
    Ответ написан
    2 комментария