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

原文: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也淡入淡出。
  • 这样做会让游戏中的很多代码在工程外调用,由引擎调用,因此后期在维护时会增加成本。因此必须在调用代码时做好注释,表明这一段代码是由引擎调用的。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • This article is a record of my journey to learn Game Deve...
    蔡子聪阅读 9,407评论 0 9
  • 一、Unity简介 1. Unity界面 Shift + Space : 放大界面 Scene界面按钮渲染模式2D...
    MYves阅读 12,704评论 0 22
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,768评论 4 61
  • 111. [动画系统]如何将其他类型的动画转换成关键帧动画? 动画->点缓存->关键帧 112. [动画]Unit...
    胤醚貔貅阅读 14,548评论 3 88
  • 一、 财务常识复习思考: (1)一家公司在一段时间内有没有赚钱,应该看哪一张报表? 答:利润表。 (2)一家公司真...
    黎海静阅读 2,532评论 0 1

友情链接更多精彩内容