Voltar para o Blog
Quest Log

Skybox na Unity: Trocar o Céu, Panorâmico e Procedural

Cena 3D com um céu de nuvens alaranjadas envolvendo o terreno como uma esfera ao redor da câmera

Unity skybox em três caminhos: Procedural, Panoramic com HDRI e Cubemap, onde achar céu grátis com licença comercial e como trocar o skybox por script.

Ferramenta:Unity

Skybox na Unity: Trocar o Céu, Panorâmico e Procedural

Para trocar o Unity skybox, você cria um material com um shader de skybox e coloca esse material em Window > Rendering > Lighting, aba Environment, campo Skybox Material. São três caminhos: Skybox/Procedural (céu calculado, sem textura), Skybox/Panoramic (uma imagem 360, normalmente um HDRI) e Skybox/Cubemap ou Skybox/6 Sided (seis faces de um cubo). Por script, o céu é RenderSettings.skybox.

Este guia mostra os três caminhos passo a passo no Unity 6.3 LTS com URP, onde baixar céu gratuito com licença que permite jogo comercial, como trocar o skybox entre fases sem a cena ficar com a luz errada, e os defeitos clássicos: céu esticado, costura visível e cena escura.

O que é skybox na Unity

O skybox é o fundo infinito da cena: o que a câmera vê quando não tem nenhum objeto na frente. Tecnicamente, é desenhado como se estivesse infinitamente longe, então ele nunca fica mais perto quando você anda.

Mas ele faz mais que decorar. Com Environment Lighting em Source: Skybox, o céu também vira a luz ambiente da cena e a fonte dos reflexos de ambiente. Trocar um céu de meio-dia por um céu de pôr do sol muda a cor das sombras e dos metais. Por isso a troca de skybox sempre vem acompanhada de um cuidado com a iluminação.

Criar o material é igual para os três tipos:

  1. Assets > Create > Material.
  2. No Inspector, no campo Shader, busque skybox e escolha o tipo.
  3. Configure as propriedades e arraste o material para Skybox Material.

Para um céu diferente só numa câmera (uma câmera de menu, por exemplo), adicione o componente Skybox na câmera e coloque o material em Custom Skybox.

Skybox Procedural: céu rápido sem textura

O Skybox/Procedural gera o céu por cálculo. Não ocupa memória de textura e acompanha o sol: ele usa a rotação da luz definida em Sun Source, na aba Environment do Lighting window. Gire a Directional Light e o céu muda, do azul do meio-dia ao laranja do horizonte.

Propriedades do material:

  • Sun: None (sem disco do sol), Simple ou High Quality (disco com borda mais suave).
  • Sun Size e Sun Size Convergence: tamanho e espalhamento do brilho do sol.
  • Atmosphere Thickness: espessura da atmosfera. Valores maiores avermelham o céu; menores deixam mais escuro e "espacial".
  • Sky Tint: tinge o céu.
  • Ground: cor do "chão" abaixo do horizonte.
  • Exposure: brilho geral.

Quando usar: protótipo, jogo estilizado, e principalmente ciclo de dia e noite, porque ele segue o sol de graça. O post de ciclo de dia e noite na Unity monta o script que gira o sol e ajusta a luz ambiente junto.

Limite: o Procedural não tem nuvens nem detalhe. Para céu realista, você precisa de imagem.

Skybox Panoramic com HDRI

Um HDRI é uma foto panorâmica de 360 graus em alto alcance dinâmico (formatos .hdr ou .exr), com informação de brilho muito acima do branco de uma imagem comum. Num skybox, isso dá céu realista e luz ambiente com contraste natural: o sol do HDRI realmente ilumina mais que o resto.

Passo a passo:

  1. Baixe um HDRI em formato equirretangular (proporção 2:1, como 4096x2048).
  2. Arraste para o projeto. No Inspector da textura, deixe Texture Shape em 2D.
  3. Aumente o Max Size (no painel de plataforma, aba Default) para o tamanho do arquivo ou perto dele. O padrão costuma ser 2048, e um céu inteiro em 2048 de largura fica borrado. Teste 4096 primeiro; 8192 só se o céu for protagonista, porque memória de textura HDR é cara.
  4. Crie o material com Skybox/Panoramic e arraste o HDRI para o campo Spherical (HDR).
  5. Mapping: Latitude Longitude Layout para HDRI equirretangular. Image Type: 360 Degrees. Se a imagem é só a metade de cima (180 graus), use 180 e ative Mirror on Back se quiser espelhar.
  6. Ajuste Exposure e Rotation (gira o céu no eixo vertical para o sol do HDRI ficar onde você quer).

Depois, posicione a sua Directional Light na mesma direção do sol visível no HDRI. Se a sombra aponta para um lado e o sol do céu está do outro, o olho percebe na hora.

Cubemap e 6 Sided: quando usar

Skybox/Cubemap usa um asset Cubemap: seis imagens quadradas, uma para cada face de um cubo, num arquivo só. Para converter uma imagem em cubemap, importe com Texture Shape em Cube; a Unity aceita layouts como cruz horizontal ou vertical e panorama equirretangular, e detecta pelo modo Mapping em Auto.

Skybox/6 Sided recebe seis texturas separadas (Front, Back, Left, Right, Up, Down). É o formato mais antigo e ainda comum em pacotes de skybox estilizados, pintados à mão.

Quando escolher cada um:

  • HDRI equirretangular: Panoramic. Menos passos.
  • Céu pintado à mão em seis faces: 6 Sided.
  • Céu que você quer usar também como reflexo em materiais: Cubemap, porque o mesmo asset serve de fonte de reflexo.

Visualmente, os três dão o mesmo resultado se a imagem de origem for a mesma. A diferença é de fluxo de trabalho.

Onde achar skybox grátis com licença para jogo comercial

Licença é o que separa "baixei grátis" de "posso publicar". Duas fontes com licença clara, conferidas nas páginas oficiais em outubro de 2026:

  • Poly Haven (polyhaven.com): HDRIs, texturas e modelos sob CC0. A página de licença diz que os assets podem ser usados para qualquer fim, inclusive comercial, sem obrigação de crédito.
  • ambientCG (ambientcg.com): materiais e HDRIs sob CC0 1.0 Universal, com uso comercial permitido e crédito opcional.

Para pacotes estilizados (céu cartoon, céu pintado, céu de pixel art), procure na Unity Asset Store e em sites de assets, sempre lendo a licença de cada item. O post sobre licença de assets para uso comercial explica as diferenças entre CC0, CC-BY e licenças de loja, e o guia de onde encontrar assets gratuitos lista outras fontes por tipo de asset.

Guarde junto do projeto um arquivo de texto com a origem e a licença de cada asset de terceiros. Quando for publicar na Steam ou passar por uma publisher, essa lista economiza horas.

Escolher o céu é a parte divertida. O trabalho de verdade é a cena inteira conversar: luz batendo certo, materiais refletindo o ambiente, fases que trocam de clima sem quebrar o desempenho. Se você quer aprender a montar esse conjunto num projeto completo, com ordem e critério, o curso de Unity é o caminho.

Curso de Unity
Quer fazer seu primeiro jogo na Unity?

No curso de Unity 6 da CursoGame.Dev você vai do zero ao primeiro jogo, com um desafio prático em cada level e suporte individual no WhatsApp quando travar.

Conhecer o curso de Unity
Suporte no WhatsAppAcesso vitalícioGarantia de 7 dias

Trocar skybox por código e atualizar a luz ambiente

Para um jogo com fases em horários diferentes (fase 1 de dia, fase 2 ao entardecer), troque o céu por script. Arquivo SkyboxSwitcher.cs:

using System.Collections;
using UnityEngine;

public class SkyboxSwitcher : MonoBehaviour
{
    [SerializeField] private Material[] skyboxes;
    [SerializeField] private Light sunLight;
    [SerializeField] private float rotationSpeed = 0.5f;

    private Material currentSkybox;

    private void Start()
    {
        if (skyboxes.Length > 0)
        {
            SetSkybox(0);
        }
    }

    public void SetSkybox(int index)
    {
        if (index < 0 || index >= skyboxes.Length)
        {
            Debug.LogWarning($"Skybox {index} não existe.");
            return;
        }

        currentSkybox = new Material(skyboxes[index]);
        RenderSettings.skybox = currentSkybox;

        if (sunLight != null)
        {
            RenderSettings.sun = sunLight;
        }

        StartCoroutine(UpdateEnvironmentNextFrame());
    }

    private IEnumerator UpdateEnvironmentNextFrame()
    {
        yield return null;
        DynamicGI.UpdateEnvironment();
    }

    private void Update()
    {
        if (currentSkybox != null && currentSkybox.HasProperty("_Rotation"))
        {
            float rotation = Mathf.Repeat(Time.time * rotationSpeed, 360f);
            currentSkybox.SetFloat("_Rotation", rotation);
        }
    }
}

As decisões:

  • new Material(...) cria uma cópia. Sem isso, girar o céu com SetFloat altera o material salvo no projeto, e a mudança fica gravada depois de sair do Play no editor.
  • DynamicGI.UpdateEnvironment() agenda a atualização do cubemap de ambiente, para a luz ambiente e os reflexos refletirem o céu novo quando Source está em Skybox. A documentação avisa que ele lê dados de volta da GPU e que chamadas em excesso são ignoradas: use na troca, não todo frame.
  • O _Rotation existe nos shaders Panoramic, Cubemap e 6 Sided, e gira o céu lentamente para dar sensação de nuvens andando. O Procedural não tem essa propriedade; ali o céu gira com o sol.

Se a troca é entre cenas (cada fase numa cena), coloque o skybox no Lighting de cada cena e pronto: cada cena guarda o próprio céu.

Erros comuns: céu esticado, costura visível e cena escura

Céu esticado ou distorcido. O Mapping está errado para o tipo de imagem: uma imagem equirretangular em 6 Frames Layout, ou um HDRI de 180 graus marcado como 360. Confira a proporção: equirretangular de 360 graus é sempre 2:1.

Costura vertical visível. Aparece onde as bordas esquerda e direita da imagem se encontram. Causas: Wrap Mode em Clamp numa imagem que precisa repetir na horizontal (use Repeat no eixo U, ou Per-axis), mipmaps gerando borda com cor errada, ou imagem que realmente não fecha nas pontas. Desligar Generate Mipmap em skybox costuma resolver.

Costura nas arestas do cubo (6 Sided). Wrap Mode precisa ser Clamp em cada uma das seis texturas, e as imagens precisam casar nas bordas.

Cena escura depois de trocar o céu. A luz ambiente ainda é do céu anterior, ou o Intensity Multiplier de Environment Lighting está baixo. Chame DynamicGI.UpdateEnvironment() depois da troca, ou ajuste as cores ambiente manualmente com Source em Gradient ou Color.

Céu preto no HDRP. Os shaders de skybox não funcionam no HDRP. Lá o céu é um Volume com Visual Environment e um tipo de céu (HDRI Sky, Physically Based Sky, Gradient Sky).

Próximo passo

Baixe dois HDRIs de horários diferentes no Poly Haven, monte dois materiais Panoramic e use o SkyboxSwitcher para trocar entre eles com uma tecla. Observe como as sombras e os metais da cena mudam com a luz ambiente atualizada. Depois experimente o Procedural com o sol girando, no guia de ciclo de dia e noite, e decida qual combina mais com o seu jogo.

Perguntas frequentes

Como trocar o skybox na Unity?

Crie um material, escolha um shader de skybox (Skybox/Procedural, Skybox/Panoramic, Skybox/Cubemap ou Skybox/6 Sided), abra Window > Rendering > Lighting, aba Environment, e arraste o material para Skybox Material. Para trocar por código, atribua o material a RenderSettings.skybox.

Onde baixar skybox grátis para jogo comercial?

Poly Haven e ambientCG distribuem HDRIs sob licença CC0, que permite uso comercial sem atribuição obrigatória, conforme as páginas de licença dos dois sites em outubro de 2026. Em qualquer outra fonte, leia a licença do arquivo antes de usar.

Por que meu skybox panorâmico fica borrado?

Quase sempre é o Max Size da textura. A Unity limita a textura importada, e um HDRI de 8K reduzido para 2048 de largura fica borrado porque o céu inteiro ocupa a tela com poucos pixels. Aumente o Max Size e confira o custo de memória.

O skybox funciona no HDRP?

Os shaders de skybox da Unity não funcionam no HDRP. No HDRP, o céu é configurado por um Volume com Visual Environment e um tipo de céu, como HDRI Sky ou Physically Based Sky. No URP, os materiais de skybox funcionam normalmente.