Unity类银河战士恶魔城学习总结(P149 Screen Fade淡入淡出菜单)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili
教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/
本章节实现了进入游戏和死亡之后的淡入淡出动画效果

UI_FadeScreen.cs
1. Animator 组件的引用 (anim)
- 该脚本通过
Animator控制 UI 元素的动画效果。anim是对Animator组件的引用,触发动画。
2. FadeOut 和 FadeIn 方法
-
这两个方法分别用于触发淡出和淡入的动画效果。具体行为取决于
Animator中的动画触发器。 -
FadeOut(): 调用anim.SetTrigger("fadeOut")来触发名为"fadeOut"的动画触发器。这个触发器会在Animator控制器中关联到某个淡出动画(如逐渐让 UI 元素透明,或让元素消失等)。 -
FadeIn(): 调用anim.SetTrigger("fadeIn")来触发名为"fadeIn"的动画触发器。同样,这会在Animator中关联到一个淡入动画(如逐渐使 UI 元素出现,或增加元素的透明度等)。
3. 使用 Animator 控制动画
Animator是 Unity 中用于控制动画的组件。通过设置触发器(SetTrigger)可以在动画状态机中切换到指定的动画状态。- 脚本本身并不直接控制动画的具体效果,而是通过
Animator和触发器来控制,因此你需要在 Unity 编辑器中确保Animator中有相应的动画和触发器。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//2024.11.28
public class UI_FadeScreen : MonoBehaviour
{private Animator anim;private void Start(){anim = GetComponent<Animator>();}public void FadeOut()=> anim.SetTrigger("fadeOut");public void FadeIn() => anim.SetTrigger("fadeIn");
}
UI_MainMenu.cs
添加了一个协程,用于延时出现动画
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//2024.11.27到冬天了
public class UI_MainMenu : MonoBehaviour
{[SerializeField] private string sceneName = "MainScene";[SerializeField] private GameObject continueButton;[SerializeField] UI_FadeScreen fadeScreen;//引用UI_FadeScreen脚本private void Start(){if (SaveManager.instance.HasSavedData() == false) //如果没有存档continueButton.SetActive(false);//不显示继续游戏按钮}public void ContinueGame(){StartCoroutine(LoadSceneWithFadeEffect(1.5f));}public void NewGame(){SaveManager.instance.DeleteSaveData();StartCoroutine(LoadSceneWithFadeEffect(1.5f));}public void ExitGame(){Debug.Log("退出游戏");}IEnumerator LoadSceneWithFadeEffect(float _delay)//加载场景的协程{fadeScreen.FadeOut();yield return new WaitForSeconds(_delay);SceneManager.LoadScene(sceneName);}
}
UI.cs
改动!!!
public void SwitchTo(GameObject _menu)// 该方法用于切换到指定的UI界面{for (int i = 0; i < transform.childCount; i++)//遍历当前UI对象的所有子物体{bool fadeScreen = transform.GetChild(i).GetComponent<UI_FadeScreen>() != null;//检查UI界面是否有FadeScreensif (fadeScreen==false)transform.GetChild(i).gameObject.SetActive(false);//遍历并隐藏所有子元素,确保了在显示新的UI界面时,所有其他的UI界面都会被隐藏}if (_menu != null)//传入的菜单不为空{_menu.SetActive(true);//显示}public void SwitchOnEndScreen(){fadeScreen.FadeOut();StartCoroutine(EndScreenCorutione());}IEnumerator EndScreenCorutione(){yield return new WaitForSeconds(1.5f);endText.SetActive(true);}
using System.Collections;
using UnityEngine;
using UnityEngine.UI;public class UI : MonoBehaviour
{[Header("End screens")][SerializeField] private UI_FadeScreen fadeScreen;[SerializeField] private GameObject endText;[Space][SerializeField] private GameObject characterUI;[SerializeField] private GameObject skillTreeUI;[SerializeField] private GameObject craftUI;[SerializeField] private GameObject optionsUI;[SerializeField] private GameObject inGameUI;//物品提示框和状态提示框public UI_SkillToolTip skillToolTip;public UI_ItemTooltip itemToolTip;public UI_StatToolTip statToolTip;public UI_CraftWindow craftWindow;private void Awake(){SwitchTo(skillTreeUI);//2024年11月22日,P138 Skill Tree Hot Fix,启动时默认显示技能树界面}void Start(){SwitchTo(inGameUI);itemToolTip.gameObject.SetActive(false);//戏启动时隐藏物品提示框和状态提示框statToolTip.gameObject.SetActive(false);}void Update(){if (Input.GetKeyDown(KeyCode.C))SwitchWithKeyTo(characterUI);if (Input.GetKeyDown(KeyCode.B))SwitchWithKeyTo(craftUI);if (Input.GetKeyDown(KeyCode.K))SwitchWithKeyTo(skillTreeUI);if (Input.GetKeyDown(KeyCode.O))SwitchWithKeyTo(optionsUI);}public void SwitchTo(GameObject _menu)// 该方法用于切换到指定的UI界面{for (int i = 0; i < transform.childCount; i++)//遍历当前UI对象的所有子物体{bool fadeScreen = transform.GetChild(i).GetComponent<UI_FadeScreen>() != null;//检查UI界面是否有FadeScreensif (fadeScreen==false)transform.GetChild(i).gameObject.SetActive(false);//遍历并隐藏所有子元素,确保了在显示新的UI界面时,所有其他的UI界面都会被隐藏}if (_menu != null)//传入的菜单不为空{_menu.SetActive(true);//显示}}public void SwitchWithKeyTo(GameObject _menu)//处理切换UI的逻辑{if (_menu != null && _menu.activeSelf)// UI界面已经显示,隐藏, 如果目标UI界面未显示,调用 SwitchTo 显示。{_menu.SetActive(false);CheckForInGameUI();return;}SwitchTo(_menu);}private void CheckForInGameUI()//关闭其他UI都会回到InGameUI{for (int i = 0; i < transform.childCount; i++){if (transform.GetChild(i).gameObject.activeSelf)//检查当前 UI 对象的第 i 个子对象是否处于激活状态。return;}SwitchTo(inGameUI);}public void SwitchOnEndScreen(){fadeScreen.FadeOut();StartCoroutine(EndScreenCorutione());}IEnumerator EndScreenCorutione(){yield return new WaitForSeconds(1.5f);endText.SetActive(true);}
}
PlayerDeathState.cs
相关文章:
Unity类银河战士恶魔城学习总结(P149 Screen Fade淡入淡出菜单)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了进入游戏和死亡之后的淡入淡出动画效果 UI_FadeScreen.cs 1. Animator 组件的引用 (anim) 该脚本通过 Animator 控制 UI 元…...
(四)3D视觉机器人的手眼标定(眼在手外)
内容 1.背景介绍1.1 思路T_target_to_cam求解公式求解 2.操作流程 1.背景介绍 3D视觉机器人指的是机器人通过3D相机提供的3D点云视觉信息,完成某些实际的功能。 目标是将场景信息从相机坐标系变换至机械臂坐标系中,最终是获得相机到机械臂基座的空间…...
安达发|制造业APS智能优化排产软件的四类制造模型解决方案
在制造业中,APS(高级计划和排程系统)智能优化排产软件的应用越来越广泛。它通过集成先进的算法和模型,帮助企业提高生产效率、降低成本并提升客户满意度。针对不同类型的生产需求,APS软件提供了四类制造模型解决方案&a…...
命令行使用ssh隧道连接远程mysql
本地电脑A 跳板机B 主机2.2.2.2 用户名 B ssh端口号22 登录密码bbb 远程mysql C 地址 3.3.3.3 端口号3306 用户名C 密码ccc A需要通过跳板机B才能访问C; navicat中配置ssh可以实现在A电脑上访问C 如何实现本地代码中访问C呢? # 假设本地使…...
力扣第 71 题 简化路径
一、题目描述 给定一个字符串 path,表示一个由目录名和斜杠 "/" 组成的绝对路径,请简化该路径,使其变为规范路径。 在 Unix 风格的文件系统中: 一个点 "." 表示当前目录本身;两个点 "..&q…...
使用ENSP实现OSPF
一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为2…...
分布式下怎么优化处理数据,怎么代替Join
分布式下怎么优化处理数据,怎么代替Join 简单来说, 可以采用 数据冗余,有意地存储一些重复的数据,以此减少关联查询的需求 数据拆分与多次查询,将一次获取的多表数据,拆分多个单独的查询 使用数据仓库…...
51单片机快速入门之中断的应用 2024/11/23 串口中断
51单片机快速入门之中断的应用 基本函数: void T0(void) interrupt 1 using 1 { 这里放入中断后需要做的操作 } void T0(void): 这是一个函数声明,表明函数 T0 不接受任何参数,并且不返回任何值。 interrupt 1: 这是关键字和参…...
[Java]微服务配置管理
介绍 代码拆分为微服务后, 每个服务都有自己的配置文件, 而这些配置文件中有很多重复的配置, 并且配置变化后需要重启服务, 才能生效, 这样就会影响开发体验和效率 配置管理服务可以帮助我们集中管理公共的配置, 并且nacos就可以实现配置管理服务 配置共享 我们可以把微服务共…...
c/c++ 用easyx图形库写一个射击游戏
#include <graphics.h> #include <conio.h> #include <stdlib.h> #include <time.h>// 定义游戏窗口的大小 #define WINDOW_WIDTH 800 #define WINDOW_HEIGHT 600// 定义玩家和目标的尺寸 #define PLAYER_SIZE 50 #define TARGET_SIZE 20// 玩家的结构…...
Rust eyre 错误处理实战教程
在《Rust 错误处理库: thiserror 和 anyhow》中我们介绍了Rust简化处理错误策略,本文解释eyre错误处理库,并通过多个实际示例进行说明,最后于anyhow库进行对比,让你更好理解其应用场景。 eyre是一个用于 Rust 的错误处理库&#x…...
面试小札:JVM虚拟机
1. 定义与基本概念 - JVM(Java Virtual Machine)即Java虚拟机,是Java程序的运行核心。它是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来运行Java字节码。字节码是一种中间格式,它使得Java程序能…...
Docker扩容操作(docker总是空间不足)
Docker扩容操作(docker总是空间不足) 1、df二连,一共也就70g,总是占满93%以上。所以需要移动到其他目录上 查看docker镜像和容器存储目录的空间大小 du -sh /var/lib/docker/2、停止docker服务 systemctl stop docker3、首先创建目录并迁移 # 首先创…...
数字图像处理(4):FPGA中的定点数、浮点数
(1)定点数:小数点固定在数据的某一位置的数,可以分为定点整数和定点小数和普通定点数。定点数广泛应用于数字图像处理(图像滤波、图像缩放)和数字信号处理(如FFT、定点卷积)中。 定…...
毕昇入门学习
schemas.py 概述 这段代码主要定义了一系列基于 Pydantic 的数据模型(BaseModel),用于数据验证和序列化,通常用于构建 API(如使用 FastAPI)。这些模型涵盖了用户认证、聊天消息、知识库管理、模型配置等多…...
2411C++,学习C++提示4
结构绑定 auto [first, ...ts] std::tuple{1, 2 ,3};assert(1 first);浮点作为非类型模板参数 template<double Value> constexpr auto value Value;int main() {std::cout << value<4.2>; // prints 4.2 }template<double... Vl1s, double... Vl2s&g…...
STM32-- 看门狗--介绍、使用场景、失效场景
STM32 中的看门狗(Watchdog Timer,简称 WDG)有两种主要类型:独立看门狗(IWDG) 和 窗口看门狗(WWDG)。它们的喂狗机制各有特点,主要区别如下: 1. 独立看门狗&a…...
【赵渝强老师】PostgreSQL的数据库
PostgreSQL的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都…...
linux安全管理-会话安全
文章目录 1 设置命令行界面超时退出2 配置终端登录失败策略3 配置 SSH 登录失败策略 1 设置命令行界面超时退出 1、检查内容 检查操作系统是否设置命令行界面超时退出。 2、配置要求 操作系统设置命令行界面超时退出。 3、配置方法 配置命令行界面超时时间,编辑/et…...
Ubuntu监视显卡占用情况
在终端中运行 watch -n 0.5 nvidia-smi【以下内容由大模型生成】 watch -n 0.5 nvidia-smi 是一个组合命令,用于在 Linux 终端中定期执行 nvidia-smi 命令并显示其输出。让我们分解一下这个命令的各个部分: watch: watch 是一个用于定期执行其他命令并显…...
Weaviate向量数据库实战:从官方示例到RAG应用开发全解析
1. 项目概述:从代码仓库到向量数据库的实战指南如果你最近在关注大语言模型应用开发,或者想给自己的应用加上一个“记忆大脑”,那你大概率已经听说过向量数据库了。在众多选型中,Weaviate以其开源、易用和强大的功能脱颖而出。但当…...
机器学习在非洲公共卫生疾病预测中的实战应用与技术解析
1. 项目概述:当AI遇见非洲公共卫生在非洲大陆,公共卫生系统长期面临着资源不均、基础设施薄弱和疾病负担沉重的多重挑战。传统的疾病监测依赖于被动报告和人工数据分析,往往存在滞后性,当疫情警报拉响时,病毒可能已经悄…...
OpenAI Cookbook中文版:AI应用开发实战指南与工程化实践
1. 项目概述:一份面向中文开发者的AI应用开发“菜谱”最近在GitHub上看到一个挺有意思的项目,叫yunwei37/openai-cookbook-zh-cn。简单来说,这就是OpenAI官方那个大名鼎鼎的openai-cookbook仓库的中文翻译版。但如果你觉得它仅仅是个翻译&…...
2026年,想要靠谱美缝团队?看完这篇你就知道选哪家!
在高端住宅、别墅装修中,美缝是彰显整体质感的关键环节。选对美缝团队,不仅能提升家居美观度,还能确保美缝效果长效耐用。2026年,如果你正在寻找靠谱的美缝团队,不妨看看长沙匠心徐师傅美缝团队,以下将为你…...
Go语言网络监控利器wiremonitor:轻量级命令行抓包与流量分析实战
1. 项目概述:一个网络流量监控的瑞士军刀如果你和我一样,经常需要和网络协议、数据包打交道,无论是排查一个诡异的API超时,还是想搞清楚某个应用到底在后台和哪些服务器“窃窃私语”,你肯定知道抓包工具的重要性。Wire…...
如何永久保存微信聊天记录?WeChatMsg开源工具让你的数字记忆永不丢失
如何永久保存微信聊天记录?WeChatMsg开源工具让你的数字记忆永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tre…...
LinkSwift:八大网盘直链解析与下载加速的现代解决方案
LinkSwift:八大网盘直链解析与下载加速的现代解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...
大语言模型微调的内存优化:零阶方法与曲率引导技术
1. 大语言模型微调的内存困境与零阶优化机遇在自然语言处理领域,大语言模型(LLM)的微调通常采用基于反向传播的一阶优化方法。这种传统方法虽然效果显著,但随着模型规模指数级增长(如GPT-3的1750亿参数)&am…...
对比直接购买与使用Taotoken Token Plan套餐的成本感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接购买与使用Taotoken Token Plan套餐的成本感受 对于个人开发者和中小项目团队而言,在探索和集成大模型能力时&…...
怎样轻松配置黑苹果系统:OpenCore Configurator新手友好的终极指南
怎样轻松配置黑苹果系统:OpenCore Configurator新手友好的终极指南 【免费下载链接】OpenCore-Configurator A configurator for the OpenCore Bootloader 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Configurator 还在为复杂的黑苹果引导配置而…...
