【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现

这篇具有很好参考价值的文章主要介绍了【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一个简单的黑屏动画,用于2D项目,效果类似慢眨眼、进/出房间时切换场景的衔接过渡。

这种效果的实现方式其实蛮多的,我能想到的包括用shader,用一张全黑Sprite覆盖屏幕,或者直接做成一个UI。

(最近学了一些UnityShader,所以首先想到的方式是用画面“后处理”的方式写一个shader挂在Camera上,可以用公开的参数调节亮度,亮度降到0就是一个黑屏的效果。但不确定这种方式对于性能上是更优还是会增加额外的负担,所以还是舍弃了这种做法。)

这里记录一个最为简单的方式,就是用一张全黑的Sprite覆盖屏幕,将它挂在Camera下面。

因为在我当前的项目中,Camera是移动的,角色进入房间、离开房间回到场景时,使用黑屏动画过渡两个场景。挂在camera下面,就自动跟随Camera移动了,调出来的时候不需要额外去设置Position。(偷懒!)当然也可以不这么做:D

代码比较简单,优点是:渐入渐出的曲线形状、动画播放速度可以随意调节,而且主要代码就是十几行。

颜色也可以自行设置,黑屏白屏都可以。黑屏适合切换场景,白屏可以用做一些闪回之类的的效果。

先放代码,后面说明。

完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

//黑屏,用一张全黑图片覆盖屏幕,调整透明度使用curve。
public class BlackScreen : MonoBehaviour
{
    public SpriteRenderer spriteRenderer;//覆盖屏幕的一张全黑图片,我选择挂在Camera下面,这样做如果相机是移动的就很方便
    public AnimationCurve curve; //在Inspector上调整自己喜欢的曲线
    [Range(0.5f, 2f)]public float speed = 1f; //控制渐入渐出的速度

    private void Awake()
    {
        if (spriteRenderer == null) 
            spriteRenderer = GetComponent<SpriteRenderer>();
    }

    //开启自动播放黑屏
    private void OnEnable()
    {
        StartCoroutine(Black());
    }

    Color tmpColor; //用于传递颜色的变量
    public IEnumerator Black()
    {
        float timer = 0f;
        tmpColor = spriteRenderer.color;
        do
        {
            timer += Time.deltaTime;
            SetColorAlpha(curve.Evaluate(timer * speed));
            yield return null;

        } while (tmpColor.a > 0);
        gameObject.SetActive(false);
    }

    //通过调整图片的透明度实现渐入渐出
    void SetColorAlpha(float a)
    {
        tmpColor.a = a;
        spriteRenderer.color = tmpColor;
    }
}

需要说明的点不多,就是通过调整黑屏图片的透明度来实现动画。

  • 用AnimationCurve 来自定义渐入渐出的曲线,Speed设置速度。

  • 用SetColorAlpha()方法用来设置全黑图片的透明度。

  • 在协程中做透明度的渐变,这里我直接把StartCoroutine(Black()) 放在OnEnable()中了(也是为了偷懒!),这样就可以平时隐藏黑屏对象,需要的时候直接SetActive它就会自动播放黑屏动画了。当然也可以把StartCoroutine(Black())放在一个公开的方法里,供外部随时调用。

对象

把脚本挂在空对象上,添加一个Sprite Renderer组件,用一张纯黑或纯白图片,大小调整为覆盖屏幕即可。如下:

【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现
  • Curve控制透明度0到1再回到0的动画节奏,可按需自行调节。

  • Speed可以控制播放的速度。

层级

在我的项目中,摄像机是移动的。为了方便随时可以播放黑屏动画,我把该对象挂在Camera下面,

设置为隐藏(GameObject.SetActive(false))。

需要播放黑屏动画时,SetActive(true)即可自动播放,播放完成将会再次隐藏。文章来源地址https://www.toymoban.com/news/detail-475511.html

【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现

到了这里,关于【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Electron打包的桌面应用程序,运行中程序黑屏、白屏等渲染进程崩溃问题解决

    使用 Electron 打包 web 项目为桌面应用程序,由于运行环境的硬件条件或其他一些原因,导致程序运行过程中黑屏、白屏、崩溃。 2.1 依赖版本: electron : v8.2.1 electron-log : v4.1.1 electron-packager : v14.2.1 2.2 运行环境 win7 x86 2.3 分析过程 2.3.1 排除 程序本身运行不会“白屏”,但运行

    2024年02月07日
    浏览(55)
  • Win10系统更新后【开机黑屏/白屏,不显示桌面,但是鼠标和任务管理器都好使】问题的解决

    如题,这个问题我碰到好几次了。解决方法就是启动explorer.exe。可以参考如下网址: win10启动后黑屏只有鼠标是什么原因_windows10开机后黑屏只有鼠标如何解决-windows系统之家   最近更新之后发现刚开机杀毒软件(火绒)跳出一个拦截,然后就没有桌面了。查看安全日志: 问题原

    2024年02月22日
    浏览(53)
  • 向日葵、Todesk、teamviewer等工具远程连接电脑时Visual Studio黑屏或白屏或不显示解决方案

    原因: 向日葵等软件,和VS的GPU渲染有冲突,导致不能正常显示。 解决方案: 取消Visual Studio 的GPU渲染功能。 操作步骤如下: 方式一 :如果能直接操作远程电脑,直接打开远程电脑的配置,取消GPU 的渲染。 取消下面两项的勾选状态,点击确定按钮,远程时可正常显示。 

    2024年02月16日
    浏览(276)
  • 【unity安卓】Unity2021导出安卓项目视频无法播放(黑屏、只有声音)

    感谢陈老师解决这个问题! 使用videoplay播放视频导出安卓项目后视频无法播放 1.加入这几个shader 整体所需shader 2.改视频设置 codec 改vp8 transcode勾选 3.修改项目申请读取手机读写权限(非必须)

    2024年02月12日
    浏览(46)
  • Unity 使用RenderTexture显示黑屏、重影、锯齿解决方法

    解决方案: 脚本new一个纹理贴图,而不是用序列化拖拽的RenderTexture。 解决方案: 只需要将Camera的 Clear Flags 设置为 Solid Color 纯色模式就可以了。 解决方案: 调整RenderTexture的antiAliasing抗锯齿参数即可。 抗锯齿值必须是(1, 2, 4 或者 8)之一,表明每像素样本的数量。 我择中使

    2024年02月11日
    浏览(47)
  • 解决Unity导出的APK启动黑屏的问题

    今天准备把最近写的Unity游戏编一个版本,但是放真机上运行时,一启动就黑屏.  网上各种查资料,折腾半天后,  找到了解决方案:    需要指定Graphics APIs 为OpenGLES3. 在 Project Settings -Player-Android 的Other Settings里 取消Auto Graphics API的勾选,  修改下面Graphics APIs 里的顺序, 让OpenGLES3 放

    2024年02月12日
    浏览(32)
  • Unity 导出android后android12以上黑屏问题

    其实这个是前两年就遇到过的问题。 基本上是权限问题引起的。 android10以上手机是需要手动获取一些敏感权限,unity2018以前的版本没有适配,导出的android工程在没有手动获取权限的情况下会黑屏卡住。 那么需要哪些权限呢? 那就是【READ_PHONE_STATE】 ,在androidmanifest里添加这

    2024年02月11日
    浏览(37)
  • unity使用videoplayer组件播放视频黑屏问题解决方案

    1、视频使用动态加载方式 2、资源需要放到resource文件夹下,不能被打成ab 3、资源打包的时候不能被压缩,在android打包文件设置成不压缩   build.gradle文件: 可能出现的问题: 导出的Android版本播放视频只用声音没有画面,初始化VideoPlayer组件时,Android平台的报错提示是:E/

    2024年02月13日
    浏览(90)
  • unity android包(armV7+arm64)启动黑屏崩溃,在splash动画开始前

    1、先交代下问题背景。打包一直是用的armV7架构,前段时间老板提到加上arm64。没想到公司其中一台手机居然崩溃,unity的splash动画都没播,但是也没闪退,就是黑屏。看到一串红色崩溃日志。 2、解决方式。把原来安装的armV7架构包删掉,再装armV7+arm64架构的包就可以了。参考

    2023年04月26日
    浏览(57)
  • three.js 缓动算法.easing(渐入相机动画)

    效果:淡入,靠近物体 代码:

    2024年01月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包