Как сделать скриншот в юнити
#2. Хитрости Unity: создание скриншотов (бесплатный C# скрипт)
‘
‘), array(«string» => ‘
‘), ); if (!isset($_COOKIE[‘rek’])) < print($banners[$GLOBALS["banner_num"]]["string"]); >elseif ($_COOKIE[‘rek’] == «rek1») < print($banners[0]["string"]); >elseif ($_COOKIE[‘rek’] == «rek2») < print($banners[1]["string"]); >?>
Обновление (12.05.2018) : добавил инструкцию по изменению размера скриншота в пикселях.
Мне часто приходится делать полноразмерные скриншоты на движке Unity для публикации моего приложения в AppStore и на Google Play и я написал малюсенький C# скрипт, который автоматизирует этот процесс.
Что делает скрипт MakeScreenshotByMouseClick.cs
Каждый раз, когда вы кликаете правой кнопкой мышки (во вкладке Game после того как вы нажали кнопку Play, чтобы запустить игру), скрипт сохраняет скриншот в папке Screenshots такого вида:
Выше выделены жирным следующие значения:
Сюда я добавляю ещё язык локализации приложения (для каждого языка свой набор скриншотов). Но не все ведь пользуются тем же плагином для локализации, что и я, поэтому я вырезал эту часть из скрипта.
Как установить и использовать
Кстати, советую всегда использовать английский софт и читать уроки/помощь на английском, а для этого вам поможет усидчивость и, например, репетитор английского языка.
Смотреть скриншоты можно и в Unity, но нужно сначала указать движку, чтобы он перечитал содержимое папки Screenshots. Для этого можно сменить фокус с Unity на любое другое приложение, а потом вернуть обратно на Unity.
Не забудьте удалить/переместить скриншоты в папку за пределами проекта Unity, чтобы они не мешались в проекте.
После того, как вы закончили со скриптами, просто деактивируйте скрипт (не удаляйте его). Для этого достаточно снять галочку слева от названия скрипта в инспекторе (как показано на заглавной картинке).
Скачать скрипт бесплатно
Как поменять размер скриншота
Разрешение скриншота зависит от разрешения игры, установленного в выпадающем меню соотношения сторон (выделен красным на скриншоте ниже, сразу под вкладкой Game):
Чтобы добавить своё разрешение, нажмите на кнопку + в кружочке (эта кнопка выделена красным внизу выпадающего меню) и введите нужное вам значение в пикселях.
Даже если нужное вам разрешение не влазит на вашем мониторе (чтобы смотреть его полноразмерно) и вы пользуетесь слайдером Scale (выделен красным на скриншоте выше), чтобы смотреть на уменьшенную версию, то мой скрипт всё равно сделает и сохранит полноразмерный снимок экрана.
Маленькая хитрость
Чтобы смотреть на игру в 100% масштабе вы выставляете слайдер Scale на значение 1. Но в режиме Play вы не можете двигать этот вьюпорт (видно только часть игры). Чтобы управлять вьюпортом Game в полноразмерном режиме, нужно нажать на кнопку Pause (пауза находится рядом с кнопкой Play) и использовать среднюю кнопку мышки во вьюпорте.
Скриншоты по таймеру
Если кому-то нужно, то могу усовершенствовать этот скрипт, чтобы скриншоты создавались по таймеру. К примеру, новый скриншот каждые 3 секунды спустя 7 секунд после запуска игры. Понятное дело, что значения для таймера можно будет настраивать самостоятельно.
Другие вкусности для Unity (и не только) читайте тут.
Подпишитесь на обновление блога (вот 3 причины для этого).
Похожие статьи:
Application.CaptureScreenshot
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Declaration
Declaration
Parameters
filename | Pathname to save the screenshot file to. |
superSize | Factor by which to increase resolution. |
Description
Captures a screenshot at path filename as a PNG file.
Use ScreenCapture.CaptureScreenshot instead of obsolete Application.CaptureScreenshot.
When superSize parameter is larger than 1, a larger resolution screenshot will be produced. For example, passing 4 will make the screenshot be 4×4 larger than it would normally be. This is useful to produce screenshots for printing.
On mobile platforms the filename is appended to the persistent data path. See Application.persistentDataPath for more information. On Android this function returns immediately. The resulting screenshot is available later.
Note: Screenshots can be made from the Editor as described above. In this case only the Game view can be captured. If the Scene view is selected any screenshot will not be written. Switching to the Game view will cause the most recent captured image to be written. See EditorWindow for how an editor-based capture window can be created. If the Game view is current and the Editor button is clicked multiple times the first generated screenshot will be written. Application.CaptureScreenshot is a Game specific function.
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Copyright ©2021 Unity Technologies. Publication Date: 2021-12-17.
ScreenCapture.CaptureScreenshot
Success!
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
Submission failed
For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
Declaration
Declaration
Parameters
filename | Pathname to save the screenshot file to. |
superSize | Factor by which to increase resolution. |
stereoCaptureMode | Specifies the eye texture to capture when stereo rendering is enabled. |
Description
Captures a screenshot at path filename as a PNG file.
If the file exists already, it will be overwritten.
On mobile platforms the filename is appended to the persistent data path. See Application.persistentDataPath for more information.
When superSize parameter is more than 1, a larger resolution screenshot will be produced. For example, passing 4 will make the screenshot be 4×4 larger than normal. This is useful to produce screenshots for printing.
The CaptureScreenshot returns immediately on Android. The screen capture continues in the background. The resulting screen shot is saved in the file system after a few seconds.
Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.
Copyright ©2021 Unity Technologies. Publication Date: 2021-12-17.
Могу ли я сделать снимок в Unity с помощью камеры устройства?
Я совершенно не знаком с более сложным набором функций Unity3D и мне любопытно, есть ли у него возможность сделать снимок, а затем манипулировать им. В частности, мое желание состоит в том, чтобы пользователь сделал селфи, а затем проследил за их лицом, чтобы создать PNG, который затем будет отображаться на модели.
Я знаю, что отображение лица на модель просто, но мне интересно, нужно ли мне писать функциональность фото / резьбы в охватывающее приложение Chrome, или если все это можно сделать изнутри единства. Мне не нужен учебник о том, как это сделать, просто спросите, возможно ли это.
6 ответов
Да, это возможно. Вы захотите посмотреть на WebCamTexture функциональность.
вы создаете WebCamTexture и вызываете его Play () функция, которая запускает камеру. WebCamTexture, как и любая текстура, позволяет получать пиксели с помощью вызова GetPixels (). Это позволяет сделать снимок, когда вам нравится, и вы можете сохранить его в Texture2D. Звонок в EncodeToPNG () и последующая запись в файл должна привести вас туда.
обратите внимание, что приведенный ниже код является быстрой записью на основе документации. Я не проверял его. Возможно, вам придется выбрать правильное устройство, если доступно несколько устройств.
для тех, кто пытается получить камеру для рендеринга live feed, вот как мне удалось его снять. Во-первых, я отредактировал ответ Барта, чтобы текстура была назначена при обновлении, а не только при запуске:
Я надеюсь,что это поможет любому, кто ищет хороший способ захвата живой камеры в Unity.
Это возможно. Я настоятельно рекомендую вам посмотреть WebcamTexture единства с API. Он имеет некоторые полезные функции:
ответ Барта имеет требуемую модификацию. Я использовал его код, и фотография, которую я получал, была черной. Требуемая модификация заключается в том, что мы должны преобразуйте TakePhoto в coroutine и добавьте
вы также можете обратиться к
Да, вы можете. Я создал Android родная камера плагин, который может открыть камеру вашего Android устройства, захватить изображение, записать видео и сохранить его в нужном месте вашего устройства с помощью всего нескольких строк кода.
Как делать скриншоты в Unity играх?
Во многих играх, особенно сетевых, очень часто разработчики добавляют возможность игрокам делится друг с другом достигнутыми результатами в игре. Одним из таких способов является выполнение скриншота, когда можно сделать снимок экрана, результата или особенного момента в игре.
В U nity также не обошли стороной эту возможность и предоставили разработчикам необходимый функционал – выполнять снимки экрана без особых усилий. Для этого существует два способа, давайте рассмотрим их подробнее.
Для примера – используем простую заготовку для игры с готовым меню.
У каждой камеры в настройках есть параметр Texture Target, куда можно поместить RenderTexture и тем самым получить в виде текстуры именно то изображение, которое сейчас “ видит ” камера.
Переходим на сцену где создадим новую камеру. Для удобства можно поместить новую камеру внутри старой, чтобы они занимали одну и ту же позицию.
public class PhotoCapture : MonoBehaviour <
public Camera captureCamera;
public void MakeScrenshot() <
Эта текстура targetTexture будет целевой, куда новая камера будет “ рендерить ” изображение со сцены.
Теперь необходимо поместить целевую текстуру targetTexture, которую мы брали из архива, обратно, так как теперь очередь главной камеры “ рендерить ” сцену.
Новой камере можно указать любые параметры отображения, или добавить эффекты и получать уже отредактированное изображение сразу после снимка.
Заключение
Такой подход “ рендера в текстуру ” можно использовать для создания миникарты, разных эффектов с камерами или создания камер которые будут показывать изображения на любых поверхностях.