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!