Динамичный скайбокс внутри единства без активов
Есть ли какой-нибудь способ иметь динамический скайбокс? Я хочу сделать цикл день-ночь, но мне нужно поменять скайбоксы - в идеале с затуханием и анимацией
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". Предупреждение. Всякий раз, когда вы отключаете скайбокс, он остается неизменным - он не сбрасывается, как другие объекты после режима воспроизведения.