Владимир Шека 4 Share Posted June 15, 2018 Для смены дня и ночи в Unity3d через скрипт сменим текстуру неба, силу и цвет окружающего освещения (ambient), уберем солнце, зададим настройки тумана. Несколько ночных скайбоксов Night Skyboxes Pack 2.unitypackage https://yadi.sk/d/Ds8DWMmK3XwSiD пак качественных скайбоксов под разные времена суток Skyboxes MegaPack 1.unitypackage https://yadi.sk/d/x7n1t3Kw3XwTKU Создайте файл с названием DayNightChange.cs, и скопируйте в него: using System.Collections; using System.Collections.Generic; using UnityEngine; public class DayNightChange : MonoBehaviour { // скрипт для сменя дня и ночи. Запоминает ваши настройки неба и освещения, и меняет их на ночные // после чего вы можете опять вызывать его функцию смены, чтобы он восстановил прежние настройки // не забудьте установить на камере "Clear Flags - Skybox" // переменные для запоминания изначальных настроек в методе Start Material oldSkyBox; // настройки текстуры неба Color oldAmbientColor; // цвет и яркость окружающего освещения float oldSunSize; // размер солнца или как-то так Color oldFogColor; // яркость и цвет тумана float oldFogDensity; // плотность тумана bool oldFogEnabled; // включен ли туман Color oldDirLightValue; // основное освещение [Header("Задайте новые настройки")] [Tooltip("Задайте текстуру скайбокса")] public Material newSkyBox; // материал скайбокса (картинка неба) [Tooltip("Цвет окружающего освещения")] public Color newAmbientColor; // окружающее освещение https://unity3d.com/ru/learn/tutorials/topics/graphics/ambient-lighting [Tooltip("Цвет тумана")] public Color newFogColor; // цвет тумана [Tooltip("Плотность тумана")] [Range(0, 1)] public float newFogDensity; // плотность тумана [Tooltip("Размер солнца или что-то вроде того")] public float newSunSize; // размер солнца [Tooltip("Включен ли туман?")] public bool newFogEnabled; [Tooltip("Перетащите сюда основное освещение")] public Light directionLight; // Direction Light, чтобы менять ему силу освещения [Tooltip("Яркость нового основного освещения (Direction Light)")] public Color newDirLightValue; void Start() { // сначала запоминаем изначальные настройки oldSkyBox = RenderSettings.skybox; // настройки текстуры неба oldAmbientColor = RenderSettings.ambientLight; // цвет и яркость окружающего освещения oldSunSize = RenderSettings.flareStrength; // размер солнца или как-то так oldFogColor = RenderSettings.fogColor; // яркость и цвет тумана oldFogDensity = RenderSettings.fogDensity; // плотность тумана oldFogEnabled = RenderSettings.fog; // включен ли туман oldDirLightValue = directionLight.color; // основное освещение } void Update() { } bool isNewSetting = false; // показывает, включены новые настройки или старые public void ChangeDayNight() { if (isNewSetting == false) // если новые настройки не включены { Debug.Log("DayNightChange: Настройки из инспектора включены"); // то активируем настройки из инспектора RenderSettings.skybox = newSkyBox; // настройки текстуры неба RenderSettings.ambientLight = newAmbientColor; // цвет и яркость окружающего освещения RenderSettings.flareStrength = newSunSize; // размер солнца или как-то так RenderSettings.fogColor = newFogColor; // яркость и цвет тумана RenderSettings.fogDensity = newFogDensity; // плотность тумана RenderSettings.fog = newFogEnabled; // включен ли туман directionLight.color = newDirLightValue; // яркость основного освещения isNewSetting = true; // переключатель в "новые настройки включены" } else // если новые настройки уже активны { Debug.Log("DayNightChange: Настройки изначальные включены"); // то устанавливаем старые настройки RenderSettings.skybox = oldSkyBox; // настройки текстуры неба RenderSettings.ambientLight = oldAmbientColor; // цвет и яркость окружающего освещения RenderSettings.flareStrength = oldSunSize; // размер солнца или как-то так RenderSettings.fogColor = oldFogColor; // яркость и цвет тумана RenderSettings.fogDensity = oldFogDensity; // плотность тумана RenderSettings.fog = oldFogEnabled; // включен ли туман directionLight.color = oldDirLightValue; // яркость основного освещения isNewSetting = false; // переключатель в "новые настройки включены" } } } Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.