86 lines
2.1 KiB
C#
86 lines
2.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Michsky.UI.Shift
|
|
{
|
|
public class BlurManager : MonoBehaviour
|
|
{
|
|
[Header("Resources")]
|
|
public Material blurMaterial;
|
|
|
|
[Header("Settings")]
|
|
[Range(0.0f, 10)] public float blurValue = 5.0f;
|
|
[Range(0.1f, 50)] public float animationSpeed = 25;
|
|
public string customProperty = "_Size";
|
|
|
|
float currentBlurValue;
|
|
|
|
void Start()
|
|
{
|
|
if (customProperty == null)
|
|
customProperty = "_Size";
|
|
|
|
blurMaterial.SetFloat(customProperty, 0);
|
|
}
|
|
|
|
IEnumerator BlurIn()
|
|
{
|
|
currentBlurValue = blurMaterial.GetFloat(customProperty);
|
|
|
|
while (currentBlurValue <= blurValue)
|
|
{
|
|
currentBlurValue += Time.deltaTime * animationSpeed;
|
|
|
|
if (currentBlurValue >= blurValue)
|
|
currentBlurValue = blurValue;
|
|
|
|
blurMaterial.SetFloat(customProperty, currentBlurValue);
|
|
yield return null;
|
|
}
|
|
|
|
StopCoroutine("BlurIn");
|
|
}
|
|
|
|
IEnumerator BlurOut()
|
|
{
|
|
currentBlurValue = blurMaterial.GetFloat(customProperty);
|
|
|
|
while (currentBlurValue >= 0)
|
|
{
|
|
currentBlurValue -= Time.deltaTime * animationSpeed;
|
|
|
|
if (currentBlurValue <= 0)
|
|
currentBlurValue = 0;
|
|
|
|
blurMaterial.SetFloat(customProperty, currentBlurValue);
|
|
yield return null;
|
|
}
|
|
|
|
StopCoroutine("BlurOut");
|
|
}
|
|
|
|
public void BlurInAnim()
|
|
{
|
|
if (gameObject.activeInHierarchy == false)
|
|
return;
|
|
|
|
StopCoroutine("BlurOut");
|
|
StartCoroutine("BlurIn");
|
|
}
|
|
|
|
public void BlurOutAnim()
|
|
{
|
|
if (gameObject.activeInHierarchy == false)
|
|
return;
|
|
|
|
StopCoroutine("BlurIn");
|
|
StartCoroutine("BlurOut");
|
|
}
|
|
|
|
public void SetBlurValue(float cbv)
|
|
{
|
|
blurValue = cbv;
|
|
}
|
|
}
|
|
} |