Динамичный скайбокс внутри единства без активов

Есть ли какой-нибудь способ иметь динамический скайбокс? Я хочу сделать цикл день-ночь, но мне нужно поменять скайбоксы - в идеале с затуханием и анимацией

1 ответ

Решение

Скайбоксы действительно просто материалы. Вы можете увидеть его свойства в инспекторе, выбрав "Окно"> "Освещение"> "Настройки" и щелкнув "Материал".

Вы можете изменить эти свойства с помощью функции SetFloat. Например, если я могу использовать следующий сценарий для импульсной экспозиции:

using UnityEngine;

public class SkyboxPulse : MonoBehaviour
{
    public float pulseRate = 0.2f;

    void Update()
    {
        float exposure = RenderSettings.skybox.GetFloat("_Exposure");

        if (exposure < 0.1 || exposure > 1.9)
            pulseRate = -pulseRate;

        RenderSettings.skybox.SetFloat("_Exposure", exposure + pulseRate * Time.deltaTime);
        print(RenderSettings.skybox.GetFloat("_Exposure"));
    }
}

Этот скрипт осуществляет доступ и изменяет переменные, установленные в шейдере "Skybox/Procedural". Предупреждение. Всякий раз, когда вы отключаете скайбокс, он остается неизменным - он не сбрасывается, как другие объекты после режима воспроизведения.

Другие вопросы по тегам