Unity 场景淡入淡出效果

 一. 使用Dotween,建议使用我的方式

   FindObjectOfType<SceneFadeInAndOut>().FadeIn(() =>
        {
            Debug.Log("Fade in MenuStart Scene");
        });

using DG.Tweening;
using System;
using System.Numerics;
using UnityEngine;
using UnityEngine.UI;public class SceneFadeInAndOut : MonoBehaviour
{#region 字段和属性的定义//渐变的速率public float m_fTime = 1f;//RawImage组件RawImage _rawImage;Color blackAlpha0 => new Color(0, 0, 0, 0);#endregionprivate void Awake(){_rawImage = FindObjectOfType<RawImage>();}void Update(){if (Input.GetKeyDown(KeyCode.I)){FadeIn(null);}if (Input.GetKeyDown(KeyCode.O)){FadeOut(null);}}/// <summary>/// 设置场景的淡入/// </summary>public void FadeIn(Action complete){_rawImage.gameObject.SetActive(true);_rawImage.color = Color.black;_rawImage.DOColor(blackAlpha0, m_fTime).SetEase(Ease.InOutQuad).OnComplete(() =>{_rawImage.gameObject.SetActive(false);complete?.Invoke();});}/// <summary>/// 设置场景的淡出/// </summary>public void FadeOut(Action complete){_rawImage.gameObject.SetActive(true);_rawImage.color = blackAlpha0;_rawImage.DOColor(Color.black, m_fTime).SetEase(Ease.InOutQuad).OnComplete(() =>{complete?.Invoke();});}}

 二. https://www.cnblogs.com/MoRanQianXiao/p/7691790.html

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class SceneFadeInAndOut : MonoBehaviour
{#region 单例模式//设置静态的字段来模拟全局的变量(开始为空)private static SceneFadeInAndOut _instance = null;/// <summary>/// 只读属性的设置/// </summary>public static SceneFadeInAndOut Instance{get{//如果一开始的为空的话if (_instance == null){//进行类的实例化的操作_instance = new SceneFadeInAndOut();}//下一个访问的话_instance就不为空直接返回字段return _instance;}}private SceneFadeInAndOut() { }#endregion#region 字段和属性的定义//渐变的速率public float floatColorChangeSpeed = 1f;//RawImage对象public GameObject goRawImage;//RawImage组件private RawImage _rawImage;//屏幕是否要逐渐清晰(默认是需要的)private bool _isSceneToClear = true;//屏幕是否需要逐渐变暗(默认是不需要的)private bool _isSceneToBlack = false;#endregionvoid Awake(){//如果goRawImage不为空的话if (goRawImage){//得到RawImage组件_rawImage = goRawImage.GetComponent<RawImage>();}}void Update(){if (_isSceneToClear){SceneToClear();}else if (_isSceneToBlack){SceneToBlack();}if(Input.GetKeyDown(KeyCode.C)){SetSceneToClear();}if (Input.GetKeyDown(KeyCode.D)){SetSceneToBlack();}}#region 公共方法的定义/// <summary>/// 设置场景的淡入/// </summary>public void SetSceneToClear(){InitToBlack();_isSceneToClear = true;_isSceneToBlack = false;}/// <summary>/// 设置场景的淡出/// </summary>public void SetSceneToBlack(){_isSceneToClear = false;_isSceneToBlack = true;}#endregion#region 私有方法的定义/// <summary>/// 屏幕逐渐清晰(淡入)/// </summary>private void FadeToClear(){//插值运算_rawImage.color = Color.Lerp(_rawImage.color, Color.clear, floatColorChangeSpeed * Time.deltaTime);}/// <summary>/// 屏幕逐渐暗淡(淡出)/// </summary>private void FadeToBlack(){//插值运算_rawImage.color = Color.Lerp(_rawImage.color, Color.black, floatColorChangeSpeed * Time.deltaTime);}/// <summary>/// 屏幕的淡入/// </summary>private void SceneToClear(){FadeToClear();//当我们的a值小于等于0.05f的时候 就相当于完全透明了if (_rawImage.color.a <= 0.05f){//设置为完全透明_rawImage.color = Color.clear;//组件的开关设置为关闭的状态_rawImage.enabled = false;//布尔条件设置为false_isSceneToClear = false;}}private void InitToBlack(){//组件的打开_rawImage.enabled = true;//设置为完全不透明的状态 _rawImage.color = Color.black;//布尔条件当到达指定的阿尔法值得时候设置为false_isSceneToBlack = false;}/// <summary>/// 屏幕的淡出/// </summary>private void SceneToBlack(){//组件的打开_rawImage.enabled = true;FadeToBlack();//当前的阿尔法值大于0.95f的时候 表示已经接近于完全不透明的状态if (_rawImage.color.a >= 0.95f){//设置为完全不透明的状态 _rawImage.color = Color.black;//布尔条件当到达指定的阿尔法值得时候设置为false_isSceneToBlack = false;}}#endregion}//class_end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前后端分离-图书价格排序案例、后端返回图片地址显示在组件上(打印图片地址)

前后端分离之图书价格排序案例&#xff0c;之后端返回图片地址显示在组件上 注意&#xff1a;分别建前后端项目&#xff0c;前端项目只写前端代码&#xff0c;后端项目只写后端代码1 图书后端 1.1 图书后端之建表 1.2 图书后端之序列化类 1.3 图书后端之视图类 1.4 图书后端之…

Mac mini2014(装的windows)重装回MacOS

Mac mini2014(装的windows)重装回MacOS 制作macos的启动U盘&#xff0c;我的是32G的 第一步下载你的硬件能使用的系统&#xff0c;建议最好低一个版本&#xff0c;因为我安装的时候出现问题。 下载地址&#xff1a;https://blog.csdn.net/netgc/article/details/130641479下载…

vue 普通组件的 局部注册

vue 普通组件的 注册 11 Vue2_3入门到实战-配套资料\01-随堂代码素材\day03\素材\00-准备代码\小兔鲜首页静态页\src

蓝桥杯每日一题20223.9.26

4407. 扫雷 - AcWing题库 题目描述 分析 此题目使用map等都会超时&#xff0c;所以我们可以巧妙的使用哈希模拟散列表&#xff0c;哈希表初始化为-1首先将地雷读入哈希表&#xff0c;找到地雷的坐标在哈希表中对应的下标&#xff0c;如果没有则此地雷的位置第一次出现&#…

MySQL基础篇-约束

目录 1.约束概述 2.分类 3.测试user表的约束情况 主键约束 非空约束及唯一约束 检查约束 默认约束 4.外键约束 外键约束的语法 外键约束的删除/更新行为 小结 1.约束概述 MySQL约束&#xff08;Constraints&#xff09;是用于确保表中数据完整性和一致性的规则。它们定…

vue3 + mark.js | 实现文字标注功能

页面效果 具体实现 新增 1、监听鼠标抬起事件&#xff0c;通过window.getSelection()方法获取鼠标用户选择的文本范围或光标的当前位置。2、通过 选中的文字长度是否大于0或window.getSelection().isCollapsed (返回一个布尔值用于描述选区的起始点和终止点是否位于一个位置&…

2.(vue3.x+vite)组件注册并调用

前端技术社区总目录(订阅之前请先查看该博客) 关联博客 1.(vue3.x+vite)封装组件 一:umd调用方式 1:引入umd.js <script src="./public/myvue5.umd.js"></script>2:编写代码调用 (1)umd方式,根据“5

爬虫 — 多线程

目录 一、多任务概念二、实现多任务方式1、多进程 &#xff08;Multiprocessing&#xff09;2、多线程&#xff08;Multithreading&#xff09;3、协程&#xff08;Coroutine&#xff09; 三、多线程执行顺序四、多线程的方法1、join()2、setDaemon()3、threading.enumerate() …

Vue+ElementUI实现动态树和表格数据的分页模糊查询

目录 前言 一、动态树的实现 1.数据表 2.编写后端controller层 3.定义前端发送请求路径 4.前端左侧动态树的编写 4.1.发送请求获取数据 4.2.遍历左侧菜单 5.实现左侧菜单点击展示右边内容 5.1.定义组件 5.2.定义组件与路由的对应关系 5.3.渲染组件内容 5.4.通过动态…

Denoising diffusion implicit models 阅读笔记

Denoising diffusion probabilistic models (DDPMs)从马尔科夫链中采样生成样本&#xff0c;需要迭代多次&#xff0c;速度较慢。Denoising diffusion implicit models (DDIMs)的提出是为了加速采样过程&#xff0c;减少迭代的次数&#xff0c;并且要求DDIM可以复用DDPM训练的网…

lv5 嵌入式开发-7 有名管道和无名管道

目录 1 进程间通信介绍 2 无名管道 2.1 无名管道特点 ​编辑 2.2 读无名管道 2.3 写无名管道 3 有名管道 3.1 有名管道特点 3.2 写有名管道 3.3 读有名管道 掌握&#xff1a;进程间通信方式介绍、无名管道特点、无名管道创建、无名管道读写特性&#xff1b;有名管道…

深入浅出DAX:SELECTEDVALUE()

深入浅出DAX&#xff1a;SELECTEDVALUE() SELECTEDVALUE()&#xff0c;如果筛选 columnName 的上下文后仅剩下一个非重复值&#xff0c;则返回该值。否则返回alternateResult&#xff0c;语法如下&#xff1a; SELECTEDVALUE(<columnName>[, <alternateResult>] …

加入WTO对跨境物流的影响

加入世界贸易组织&#xff08;WTO&#xff09;可以对跨境物流产生多方面的影响&#xff1a; 提高市场开放度&#xff1a;WTO加入国必须采用更加开放的贸易政策&#xff0c;减少关税和非关税壁垒&#xff0c;提高市场的开放度&#xff0c;这将促进跨境物流的发展。 促进贸易流动…

Rabbit消息的可靠性

生产者重连 消费者重试 Confirm模式简介 消息的confirm确认机制&#xff0c;是指生产者投递消息后&#xff0c;到达了消息服务器Broker里面的exchange交换机&#xff0c;则会给生产者一个应答&#xff0c;生产者接收到应答&#xff0c;用来确定这条消息是否正常的发送到Broker…

【大数据】Doris 构建实时数仓落地方案详解(三):Doris 实时数仓设计

本系列包含&#xff1a; Doris 构建实时数仓落地方案详解&#xff08;一&#xff09;&#xff1a;实时数据仓库概述Doris 构建实时数仓落地方案详解&#xff08;二&#xff09;&#xff1a;Doris 核心功能解读Doris 构建实时数仓落地方案详解&#xff08;三&#xff09;&#…

数据库存储引擎和数据类型详细介绍

目录 一、数据库存储引擎&#xff08;了解&#xff09;1.了解MySQL体系结构2.存储引擎&#xff08;了解&#xff09;2.1.存储引擎的介绍2.2.存储引擎分类2.3.如何选择引擎&#xff1f; 3.事务控制语言(TCL)事务的四个特性(ACID) 二、数据类型&#xff08;了解&#xff09;1.整型…

Servlet操作与用法(保姆式教学)

Servlet介绍 什么是servlet Servlet&#xff08;Servlet Applet的缩写&#xff0c;全称 Java Servlet&#xff09;&#xff1a;适用于Java编写的服务器程序&#xff0c;其主要功能是在于交互式的浏览和修改数据&#xff0c;生成动态Web内容。狭义的Servlet是指Java语言实现的…

Xmake v2.8.3 发布,改进 Wasm 并支持 Xmake 源码调试

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量&#xff0c;没有任何依赖&#xff0c;因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建&#xff0c;相比 makefile/CMakeLists.txt&#xff0c;配置语法更加简洁直观&#xff0c;对新手非常友好&#x…

react父子组件通信

总结 父传子&#xff1a;最常见 把父组件中的数据传给子组件 子传父&#xff1a;子组件调用父组件传递过来的参数&#xff0c;并且把想要传递的数据当成函数的实参传入即可 【子组件通过调用父组件传递到子组件的方法向父组件传递数据】 对于子传父中子组件还是先调用了父组…

ARM day1

1.复习今日内容 2.搭建汇编环境 下发资料-》工具软件 -》汇编环境搭建 3.安装Ubuntu下的交叉编译工具链 思维导图&#xff1a;