Pular para o conteúdo
AstraDOCS

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.

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
}
}
}

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
}
[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
}
}

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 perfil
if (Object.GetComponent<ParticleSystem>() is { } fx)
{
fx.Emit(30);
if (!fx.IsPlaying()) fx.Play();
}

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.

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.