Unity3d 场景的淡入淡出效果实现
思路
- 用UGUI设计一张全屏的纯色图片
- 控制图片的Alpha值,来实现淡入淡出的效果
效果展示
实现
- 先新建一张图片,设置锚点为全屏
设置颜色值 - 新建脚本Fade_Control
using UnityEngine; using UnityEngine.UI; //状态效果值 public enum FadeStatuss { FadeIn, FadeOut } public class Fade_Control : MonoBehaviour { //设置的图片 public Image m_Sprite; //透明值 private float m_Alpha; //淡入淡出状态 private FadeStatuss m_Statuss; //效果更新的速度 public float m_UpdateTime; //场景名称 public string m_ScenesName; // Use this for initialization void Start() { //默认设置为淡入效果 m_Statuss = FadeStatuss.FadeIn; } // Update is called once per frame void Update() { //控制透明值变化 if (m_Statuss == FadeStatuss.FadeIn) { m_Alpha += m_UpdateTime * Time.deltaTime; } else if (m_Statuss == FadeStatuss.FadeOut) { m_Alpha -= m_UpdateTime * Time.deltaTime; } UpdateColorAlpha(); } void UpdateColorAlpha() { //获取到图片的透明值 Color ss = m_Sprite.color; ss.a = m_Alpha; //将更改过透明值的颜色赋值给图片 m_Sprite.color = ss; //透明值等于的1的时候 转换成淡出效果 if (m_Alpha > 1f) { m_Alpha = 1f; m_Statuss = FadeStatuss.FadeOut; } //值为0的时候跳转场景 else if (m_Alpha < 0) { SceneManager.LoadScene(m_ScenesName); } } }
OK,有一点不完美的是在屏幕亮了之后才加载场景,应该是在正在亮的时候就加载场景,在以后再完善一下吧