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. FadeOutFadeIn 方法

  • 这两个方法分别用于触发淡出和淡入的动画效果。具体行为取决于 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

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

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

相关文章

【C语言篇】探索 C 语言结构体:从基础语法到数据组织的初体验

我的个人主页 我的专栏&#xff1a;C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 什么是结构体结构体的定义与使用结构体内存布局嵌套结构体与指针结构体数组的操作结构体与函数结构体内存对齐机制位域与结构体的结合动态内存分…

COMSOL工作站:配置指南与性能优化

COMSOL Multiphysics 求解的问题类型相当广泛&#xff0c;提供了仿真单一物理场以及灵活耦合多个物理场的功能&#xff0c;供工程师和科研人员来精确分析各个工程领域的设备、工艺和流程。 软件内置的#模型开发器#包含完整的建模工作流程&#xff0c;可实现从几何建模、材料参数…

全面解析LLM业务落地:RAG技术的创新应用、ReAct的智能化实践及基于业务场景的评估框架设计

1. 如何让LLM更好的业务落地常见方法 等待新的大型模型版本:但是,每个新版本也会有时间限制。 自己训练模型:这种方法成本高昂且耗时,需要大量基础设施。它也只是一个临时解决方案。 LoRA(低秩自适应)微调:这种方法更简单、更便宜,可以更频繁地进行,但不能在线进行。模…

大语言模型LLM的微调代码详解

代码的摘要说明 一、整体功能概述 这段 Python 代码主要实现了基于 Hugging Face Transformers 库对预训练语言模型&#xff08;具体为 TAIDE-LX-7B-Chat 模型&#xff09;进行微调&#xff08;Fine-tuning&#xff09;的功能&#xff0c;使其能更好地应用于生成唐诗相关内容的…

js中判断数组和判断对象的方法

判断数组 Array.isArray() 方法 这是最推荐的方法&#xff0c;简单明了。它可以检测数组的情况&#xff0c;并且不会误报其他类型。 const arr [1, 2, 3]; console.log(Array.isArray(arr)); // trueconst notArray { key: value }; console.log(Array.isArray(notArray))…

Leetcode 131 Palindrome Partition

题意 把一个字符串分割成多个回文字符串的partition&#xff0c;返回所有的可能partion 链接 https://leetcode.com/problems/palindrome-partitioning/description/ 思考 这只是dfs套了一个回文问题 题解 dfs每次截取一段字符串&#xff0c;判断是否是回文 退出条件是遍…

qt5.14.2跟vs2022配置

1.qt6要在线安装&#xff0c;安装时间比较长&#xff0c;要求网络要稳定&#xff0c;不适合快速安装 2.使用qt5.14.2离线安装包&#xff0c;安装速度快&#xff0c;可以快速安装。 3.安装完qt.5.14.2后打开QtCreate4.0.1&#xff0c;打开 工具->选项->Kits,发现如下图: 没…

【拥抱AI】RAG(Retrieval-Augmented Generation)知识库的切片策略及其改进

1. RAG简介 RAG是一种结合了信息检索和文本生成的技术&#xff0c;它通过从一个外部的知识库中检索相关信息来增强生成模型的能力。这种方法可以提高生成内容的相关性和准确性&#xff0c;特别是在处理长文档时&#xff0c;有效的文本切片策略对于提升检索效率和质量至关重要。…

ESP32 wifi smartConfig 配网时密码错误导致一直死循环问题解决

项目场景 硬件:ESP32-LyraT-Mini V1.2开发板,使用的是ESP32-WROVER-E 模组。 程序:基于smart_config示例程序测试 问题描述 烧录程序后,debug打印“smartconfig_example: Scan done”信息后,打开手机app“EspTouch”进行配网,如果密码输入正确,正常的debug信息如下:…

webrtc ios h264 硬编解码

webrtc ios h264 硬编解码 一 ios 系统支持 从ios8开始&#xff0c;苹果公司开放了硬解码和硬编码API&#xff08;即 VideoToolbox.framework API&#xff09; 二 主要api 1 主要解码函数 VTDecompressionSessionCreate // 创建解码 session VTDecompressionSession…

深入解析 MySQL 启动方式:`systemctl` 与 `mysqld` 的对比与应用

目录 前言1. 使用 systemctl 启动 MySQL1.1 什么是 systemctl1.2 systemctl 启动 MySQL 的方法1.3 应用场景1.4 优缺点优点缺点 2. 使用 mysqld 命令直接启动 MySQL2.1 什么是 mysqld2.2 mysqld 启动 MySQL 的方法2.3 应用场景2.4 优缺点优点缺点 3. 对比分析结语 前言 MySQL …

Ubuntu20.04运行LARVIO

文章目录 1.运行 Toyish 示例程序2.运行 ROS Nodelet参考 1.运行 Toyish 示例程序 LARVIO 提供了一个简化的toyish示例程序&#xff0c;适合快速验证和测试。 编译项目 进入 build 文件夹并通过 CMake 编译项目&#xff1a; mkdir build cd build cmake -D CMAKE_BUILD_TYPER…

[2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))

方法一&#xff08;string&#xff09;&#xff1a; #include <iostream> #include <string> using namespace std;// 检查是否为回文数 bool isPalindrome(int n) {string str to_string(n);int left 0, right str.size() - 1;while (left < right) {if (s…

HTML 中 a 标签跳转问题总结:从框架页面跳转的困境与突破

在 HTML 网页开发过程中&#xff0c;a 标签作为超链接的常用标记&#xff0c;其跳转功能看似简单&#xff0c;实则在一些特定场景下会遇到诸多复杂问题。本文将围绕一个具体的案例展开&#xff0c;深入探讨在框架页面中使用 a 标签跳转时所面临的挑战以及相应的解决方案&#x…

【Db First】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列 &#x1f…

课题组自主发展了哪些CMAQ模式预报相关的改进技术?

空气污染问题日益受到各级政府以及社会公众的高度重视&#xff0c;从实时的数据监测公布到空气质量数值预报及预报产品的发布&#xff0c;我国在空气质量监测和预报方面取得了一定进展。随着计算机技术的高速发展、空气污染监测手段的提高和人们对大气物理化学过程认识的深入&a…

在 Django 中创建和使用正整数、负数、小数等数值字段

文章目录 在 Django 中创建和使用正整数、负数、小数等数值字段正整数字段&#xff08;Positive Integer&#xff09;PositiveIntegerField 负整数字段&#xff08;Negative Integer&#xff09;IntegerField 配合自定义验证 小数字段&#xff08;Decimal&#xff09;使用 Deci…

扫雷-完整源码(C语言实现)

云边有个稻草人-CSDN博客 在学完C语言函数之后&#xff0c;我们就有能力去实现简易版扫雷游戏了&#xff08;成就感满满&#xff09;&#xff0c;下面是扫雷游戏的源码&#xff0c;快试一试效果如何吧&#xff01; 在test.c里面进行扫雷游戏的测试&#xff0c;game.h和game.c…

Stable Diffusion 3 部署笔记

SD3下载地址&#xff1a;https://huggingface.co/stabilityai/stable-diffusion-3-medium/tree/main https://huggingface.co/spaces/stabilityai/stable-diffusion-3-medium comfyui 教程&#xff1a; 深度测评&#xff1a;SD3模型表现如何&#xff1f;实用教程助你玩转Stabl…

uniapp在App端定义全局弹窗,当打开关闭弹窗会触发onShow、onHide生命周期怎么解决?

在uniapp(App端)中实现自定义弹框&#xff0c;可以通过创建一个透明页面来实现。点击进入当前页面时&#xff0c;页面背景会变透明&#xff0c;用户可以根据自己的需求进行自定义&#xff0c;最终效果类似于弹框。 遇到问题&#xff1a;当打开弹窗(进入弹窗页面)就会触发当前页…