美文网首页
【转载】Unity切换场景淡入淡出效果

【转载】Unity切换场景淡入淡出效果

作者: jingz课程 | 来源:发表于2019-01-04 23:22 被阅读0次

    原文:https://blog.csdn.net/q568360447/article/details/71125623

    在制作游戏时,我们在切换场景时经常需要增加一个淡入淡出的效果。这里,我们利用Unity自带的动画系统制作一个场景的淡入淡出的效果。步骤如下:

    1. 在游戏中新建一个游戏对象,给游戏添加一个GUITexture组件,并设置好相关的参数后,制作成prefab。如下图:
    1. 给这个prefab制作1个动作文件Animation,这个动作一会持续2秒,动画的持续过程会改变此prefab中GUITexture里的Color.a的值。在第0帧处,color.a的值为0,在动画的第1秒处color.a的值为0.5,在动画第2秒处color.a的值又变化为0.此时就完成了一个alpha值的渐变动画。

    2. 加控制代码

    using UnityEngine;
    using System.Collections;
    using UnityEngine.SceneManagerment;
    
    public class LoadLevelFadeEffect : MonoBehaviour {
        [HideInInspector]
        public int levelIndex;
    
        // Use this for initialization
        void Awake () {
            //这个脚本不会在切换场景时被销毁
            DontDestroyOnLoad(this.gameObject);
        }
    
        // Update is called once per frame
        void Update () {
    
    
        }
    
        /// <summary>
        /// 注:这个方法在unity引擎中的动画系统中利用事件调用。下面的DestroySelf同样在Unity中调用
        /// </summary>
        public void Test()
        {
            //这里是场景切换的逻辑。
            SceneManager.LoadScene(levelIndex);
            ……
        }
    
        public void DestroySelf()
        {
            Destroy(this.gameObject);
        }
    }
    
    1. 将上面的脚本添加给我们制作的prefab中,并在该prefab的动画的第1秒处的关键帧上添加事件,执行Test()函数。在动画播放完毕后的关键帧上再添加事件,执行DestroySelf()函数,表示销毁自身。

    至此,整个切换场景的淡入淡出效果实现完毕。但是这样做有几点是需要注意的:

    • 在需要切换场景的时候只需要生成这个Prefab即可,生成代码如下:
            //在场景中生成该Prefab
            GameObject go = UIManager.Instance.LoadGameObject("Others/Fade");
            GUITexture gt = go.GetComponent<GUITexture>();
            //保证GUITexture可以覆盖整个游戏屏幕
            gt.pixelInset = new Rect(-100, -100, Screen.width, Screen.height);
    
    • 这个淡入淡出只针对游戏内的场景有效,无法将游戏中的UI也淡入淡出。
    • 这样做会让游戏中的很多代码在工程外调用,由引擎调用,因此后期在维护时会增加成本。因此必须在调用代码时做好注释,表明这一段代码是由引擎调用的。

    相关文章

      网友评论

          本文标题:【转载】Unity切换场景淡入淡出效果

          本文链接:https://www.haomeiwen.com/subject/ezylrqtx.html