@saylar
Разработчик Unity C#

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

Как сделать функцию, которая при нажатии на кнопку будет сохранять скриншот с приложения и показывать полученный скриншот в отдельном окошке UI. Функция должна работать на iOS и Android.

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

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

"показывать полученный скриншот в отдельном окошке UI " - вот эту часть на компе вы сделали??
если да, то ничего сложного сделать тоже самое на мобилках
просто используйте
https://docs.unity3d.com/ScriptReference/Applicati... (путь к папке для приложения, не надо будет получать права записи и точно работает на iOS и Андроид)

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

тут уж простите каждый из пунктов - гуглить и выяснять и реализовывать - это уже обучение и за вами остается.
( а уж всякие, закончилось место, удалять старые, сохранять в выбранное место (на анроиде только прокатит, ай ос же закрытая и не даст пихать просто куда попало) - это уже вообще отдельныу темы)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы