using UnityEngine;
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class ScreenFade : MonoBehaviour
{
public static ScreenFade instance;
#region Variables
public bool BeginFade = false;
public Shader RadialBlurShader = null;
private Material RadialBlurMaterial = null;
[Range(0.0f, 2.0f)]
public float SampleDist = 0f;
[Range(0.0f, 5.0f)]
public float SampleStrength = 0f;
public Texture2D _maskTexture;
public Texture2D maskTexture
{
get
{
if (_maskTexture == null)
_maskTexture = (Texture2D)Resources.Load<Texture2D>(texture);
}
return _maskTexture;
}
}
#endregion
public static void Start(Color newColor, float duration)
{
if (instance)
{
instance.StartFade(newColor, duration);
}
}
public void StartFade(Color newColor, float duration)
{
BeginFade = true;
}
void Start()
{
FindShaders();
CreateMaterials();
instance = this;
}
void FindShaders()
{
if (!RadialBlurShader)
{
&n
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class ScreenFade : MonoBehaviour
{
public static ScreenFade instance;
#region Variables
public bool BeginFade = false;
public Shader RadialBlurShader = null;
private Material RadialBlurMaterial = null;
[Range(0.0f, 2.0f)]
public float SampleDist = 0f;
[Range(0.0f, 5.0f)]
public float SampleStrength = 0f;
public Texture2D _maskTexture;
public Texture2D maskTexture
{
get
{
if (_maskTexture == null)
{
//这是一张黑色的Png 图片就可以了,想做其他效果可以改变图片的透明度等
string texture = "EyeFade";_maskTexture = (Texture2D)Resources.Load<Texture2D>(texture);
}
return _maskTexture;
}
}
#endregion
public static void Start(Color newColor, float duration)
{
if (instance)
{
instance.StartFade(newColor, duration);
}
}
public void StartFade(Color newColor, float duration)
{
BeginFade = true;
}
void Start()
{
FindShaders();
CreateMaterials();
instance = this;
}
void FindShaders()
{
if (!RadialBlurShader)
{
&n

这篇博客介绍了如何在Unity3D中使用自定义Shader实现VR瞬移时的闭眼效果,以减轻用户的眩晕感。通过应用径向模糊效果,模拟闭眼过程,并在瞬移后渐进显示场景,从而帮助缓解视觉不适。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



