Gráficos por script: hora, clima, luz, partículas e sondas
Exemplos curtos em C# para mudar a hora do dia, o clima, a luz, o Volume, soltar partículas e recapturar uma sonda.
Conferido na fonte e no computador · APK 0.4.0 · fachadas conferidas na fonte do APK
Conferido contra a fachada C# do APK (tipos e membros um a um); a execução desta receita no aparelho ainda não foi registrada.
Cada exemplo vai num objeto que tem o componente usado. Os nomes dos campos são os da fachada C# gerada a partir do Inspector.
Acelerar o dia (Hora do dia)
Seção intitulada “Acelerar o dia (Hora do dia)”No objeto do Sol com a TimeOfDay:
[ComponentId("meujogo.dia-rapido")]public sealed class DiaRapido : Behavior{ public override void Start() { if (Object.GetComponent<TimeOfDay>() is { } hora) { hora.Hour = 6; // começa ao amanhecer hora.DayLengthMinutes = 4; // um dia inteiro em 4 minutos } }}Trocar o clima (Clima)
Seção intitulada “Trocar o clima (Clima)”No objeto do Weather:
if (Object.GetComponent<Weather>() is { } clima){ clima.Kind = Weather.KindOption.Tempestade; clima.Intensity = 0.9f; // a Transição do Clima suaviza a troca}Piscar uma luz (Luz)
Seção intitulada “Piscar uma luz (Luz)”[ComponentId("meujogo.luz-piscando")]public sealed class LuzPiscando : Behavior{ private float t; public override void Update(float seconds) { t += seconds; if (Object.GetComponent<Light>() is { } luz) luz.Intensity = t % 1 < 0.1f ? 0 : 3; // apaga 0,1 s a cada segundo }}Pesar um Volume (Ambiente)
Seção intitulada “Pesar um Volume (Ambiente)”O efeito precisa estar no perfil do Volume (override adicionado). Pelo EnvironmentVolume:
if (Object.GetComponent<EnvironmentVolume>() is { } volume) volume.Weight = 1; // 0 não influencia, 1 aplica todo o perfilSoltar partículas (Sistema de partículas)
Seção intitulada “Soltar partículas (Sistema de partículas)”if (Object.GetComponent<ParticleSystem>() is { } fx){ fx.Emit(30); if (!fx.IsPlaying()) fx.Play();}Recapturar uma sonda (Sonda de reflexo)
Seção intitulada “Recapturar uma sonda (Sonda de reflexo)”Com a sonda em Tipo Tempo real e Atualização Por script:
if (Object.GetComponent<ReflectionProbe>() is { } sonda) sonda.RenderProbe();O fim da recaptura ainda não é avisado ao script.
Com os nomes da Unity
Seção intitulada “Com os nomes da Unity”Os mesmos recursos também têm a API com os nomes e as assinaturas da Unity (Volume.Profile, VolumeProfile.TryGet, TimeOfDay.Current com eventos, Material.SetFloat): veja API gráfica com os nomes da Unity.