using UnityEngine; public class RainEffectController : MonoBehaviour { public RainEffect rain; public RainEffect rain2; public ShowerEffect shower; public AudioSource rainAudio; public Texture2D singleRainTexture; public Texture2D multipleRainTexture; private float def_ShowerAlpha; private float def_Intensity; private float def_Size; private float def_IntervalMin; private float def_IntervalMax; private float def_FadeSpeed; private int currentMode; private void Awake() { def_ShowerAlpha = 0f; def_Intensity = 0.6f; def_Size = 0.7f; def_IntervalMin = 0.6f; def_IntervalMax = 1.4f; def_FadeSpeed = 0.5f; } private void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) { currentMode = 0; } if (Input.GetKeyDown(KeyCode.Alpha2)) { currentMode = 1; } if (Input.GetKeyDown(KeyCode.Alpha3)) { currentMode = 2; } if (Physics.Raycast(base.transform.position, Vector3.up, 10f)) { InHome(); } else { OutSide(); } } private void InHome() { rain.Intensity = Mathf.Lerp(rain.Intensity, 0f, Time.deltaTime * 10f); shower.alpha = Mathf.Lerp(shower.alpha, 0f, Time.deltaTime * 5f); rainAudio.volume = Mathf.Lerp(rainAudio.volume, 0.2f, Time.deltaTime * 2f); rain2.enabled = false; } private void OutSide() { switch (currentMode) { case 0: shower.alpha = def_ShowerAlpha; rain.Intensity = def_Intensity * 0.8f; rain.Size = def_Size * 1.2f; rain.IntervalMin = def_IntervalMin / 1.1f; rain.IntervalMax = def_IntervalMax / 1.6f; rain.FadeSpeedMin = def_FadeSpeed * 0.8f; rain.FadeSpeedMax = def_FadeSpeed * 1.5f; rain.NormalMap = singleRainTexture; rainAudio.volume = Mathf.Lerp(rainAudio.volume, 0.3f, Time.deltaTime * 4f); rain2.enabled = true; break; case 1: shower.alpha = 0.01f; rain.Intensity = def_Intensity * 0.6f; rain.Size = def_Size * 0.98f; rain.IntervalMin = def_IntervalMin / 1.1f; rain.IntervalMax = def_IntervalMax / 1.6f; rain.FadeSpeedMin = def_FadeSpeed * 0.8f; rain.FadeSpeedMax = def_FadeSpeed * 1.5f; rain.NormalMap = multipleRainTexture; rainAudio.volume = Mathf.Lerp(rainAudio.volume, 0.7f, Time.deltaTime * 4f); rain2.enabled = true; break; case 2: shower.alpha = 0.05f; rain.Intensity = def_Intensity * 0.5f; rain.Size = def_Size * 0.6f; rain.IntervalMin = def_IntervalMin / 5f; rain.IntervalMax = def_IntervalMax / 5f; rain.FadeSpeedMin = def_FadeSpeed * 1.8f; rain.FadeSpeedMax = def_FadeSpeed * 2.5f; rain.NormalMap = multipleRainTexture; rainAudio.volume = Mathf.Lerp(rainAudio.volume, 1f, Time.deltaTime * 4f); rain2.enabled = true; break; } } private void OnGUI() { Rect clientRect = new Rect(40f, 50f, 320f, 120f); clientRect = GUI.Window(0, clientRect, DoMyWindow, "Rain Effect v1.2"); } private void DoMyWindow(int windowID) { GUILayout.Label("Press 1, 2, 3 Key to change strength of rain"); GUILayout.Label("Or change by this button below"); if (GUILayout.Button("Change rain strength", GUILayout.Height(30f))) { currentMode = (currentMode + 1) % 3; } GUI.DragWindow(new Rect(0f, 0f, 10000f, 10000f)); } }