Captura de tela (screenshot) com Unity 3D

Veja como é muito simples capturar a tela do seu game dentro do Unity 3D 5.

Quem nunca jogou um game e queria ter capturado uma imagem para registrar o momento, seja ele algo engraçado ou uma linda paisagem? Acho que a maioria.

Pois bem, a Unity 5 nos permite facilmente fazer isto com apenas uma linha de código, mas é claro que devemos criar condições para isso, mas mesmo assim o código ainda fica pequeno.

Se deseja distribuir seu jogo dentro da Steam, não é necessário implementar este recurso, pois pressionando a tecla F12, a ferramenta já captura a tela sem nenhum esforço.

Figura 1: Captura do jogo Far Cry 3

Veja o código abaixo, este código permite fazer a captura da tela e foi utilizado na videoaula disponível logo abaixo.

Código 01:

using UnityEngine;
using System.Collections;
using System.IO;
using System;

public class Screenshot : MonoBehaviour
{

    private string _caminho;
    void Start()
    {
        _caminho = Application.dataPath + "/capturas/";

        if (!Directory.Exists(_caminho))
        {
            Directory.CreateDirectory(_caminho);
        }
    }


    void Update()
    {
        if (Input.GetKeyDown(KeyCode.P))
        {

            string nomeImagem = _caminho + DateTime.Now.Ticks.ToString() + ".png";
//O recurso Application.Cap...está obsoleta na versão 2017 da Unity.

            Application.CaptureScreenshot(nomeImagem, 2);//Unity < 2017
            //ScreenCapture.CaptureScreenshot(nomeImagem, 2); //Unity >= 2017
        }
    }
}

Veja a explicação para cada parte do código, logo abaixo.

     * Directory.Exists() - Verifica se o diretório existe

     * Directory.CreateDirectory() - Cria um diretório

     * Application.dataPath - Obtém o caminho de onde o projeto está sendo executado

     * Input.GetKeyDown() - Verifica se uma tecla foi pressionada

     * KeyCode.P - Obtém o código correspondente a tecla P

     * Application.CaptureScreenshot() - Captura a imagem a partir da câmera principal ativa

     * DateTime.Now.Ticks - Retorna os tiques da data e hora atual

     * using System.IO - Importa a biblioteca de entrada e saída de dados

Basta criar o script e adiciona-lo em algum GameObject em cena.

Figura 2: Imagem captura com o script criado

Até a próxima!