当前位置: 首页 > news >正文

Unity实战案例全解析:PVZ 植物卡片状态分析

Siki学院2023的PVZ免费了,学一下也坏 

卡片状态

卡片可以有三种状态:

1.阳光足够,(且cd好了可以种植)

2.阳光不够,(cd?好了:没好 (三目运算符))

3.开始转cd,(被种下)

状态切换是单向循环的,只有a到b,没有a到c所以不会互相干扰,所以上面括号内的内容可以不用考虑 

转换状态触发条件

因为教程中使用的是枚举配合Switch切换状态

public class ControlState : MonoBehaviour
{public enum Card_State{ //准备就绪E_Ready,//CdE_Cd,//cd结束等待阳光E_WaitingSun}//三种状态的对象public GameObject Light;public GameObject WaitSun;public Image LayerMask;Card_State state;//计时器变量public float ReadNeedTime = 2;public float CdTime = 0;//需要阳光数public int needSunPoint = 50;private void Awake() {//初始状态表现一下Cd冷却state = Card_State.E_Cd;}private void Update() {switch (state) {case Card_State.E_Ready:ReadyUpdate();break;case Card_State.E_Cd:CDUpdate();break;case Card_State.E_WaitingSun:WaitingSunUpdate();break;default:throw new System.NotImplementedException("未正确返回枚举类型");}}/// <summary>/// 阳光不够就切换回等待状态/// </summary>public void ReadyUpdate(){if (needSunPoint > SunManger.Instance.SunPoint) {Translate2WaitSun();}}/// <summary>/// 转cd,如果cd转完了则转到等待阳光阶段/// </summary>public void CDUpdate(){ //计时器变0将图片设置为WaitingSun状态CdTime += Time.deltaTime;LayerMask.fillAmount = (ReadNeedTime - CdTime) / ReadNeedTime;if (CdTime>ReadNeedTime){Translate2WaitSun();}}/// <summary>/// 阳光足够则转为准备好的阶段/// </summary>public void WaitingSunUpdate() {if (needSunPoint <= SunManger.Instance.SunPoint){Translate2Ready();}}

让我想想,从难度低到难度高,还有几种方式可以切换状态

1.if else 我以切换条件定义一堆变量可以实现条件切换

2.事件,写了这么多函数是否可以用Unity.Event的配合UGUI来切换呢?有待考究

胡说但是说不定可行:3.状态机  4.行为树

转换状态中要处理的逻辑

    /// <summary>/// 转换方法:2WaitSun/// </summary>public void Translate2WaitSun(){state = Card_State.E_WaitingSun;LayerMask.gameObject.SetActive(false);Light.SetActive(false);WaitSun.SetActive(true);//重置计时器CdTime = 0;}/// <summary>/// 转换方法:2Ready/// </summary>public void Translate2Ready(){state = Card_State.E_Ready;LayerMask.gameObject.SetActive(false);Light.SetActive(true);WaitSun.SetActive(false);}/// <summary>/// 转换方法:2Cd/// </summary>public void Translate2Cd() {state = Card_State.E_Cd;LayerMask.gameObject.SetActive(true);Light.SetActive(false);WaitSun.SetActive(true);}/// <summary>/// Ready下被点击将会进入cd/// </summary>public void OnClick(){//阳光检查if (needSunPoint > SunManger.Instance.SunPoint)return;//TODO:被种植//转入cd状态Translate2Cd();}
}

 

 

相关文章:

Unity实战案例全解析:PVZ 植物卡片状态分析

Siki学院2023的PVZ免费了&#xff0c;学一下也坏 卡片状态 卡片可以有三种状态&#xff1a; 1.阳光足够&#xff0c;&#xff08;且cd好了可以种植&#xff09; 2.阳光不够&#xff0c;&#xff08;cd&#xff1f;好了&#xff1a;没好 &#xff08;三目运算符&#xff09;&…...

判断变量是否为有限数字(非无穷大或NaN)math.isfinite() 判断变量是否为无穷大(正无穷大或负无穷大)math.isinf()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 判断变量是否为有限数字&#xff08;非无穷大或NaN&#xff09; math.isfinite() 判断变量是否为无穷大&#xff08;正无穷大或负无穷大&#xff09; math.isinf() 请问关于以下代码表述错误…...

idea使用阿里云服务器运行jar包

说明&#xff1a;因为我用的阿里云服务器不是自己的&#xff0c;所以一些具体的操作可能不太全面。看到一个很完整的教程&#xff0c;供参考。 0. 打包项目 这里使用的是maven打包。 在pom.xml中添加以下模块。 <build><plugins><plugin><groupId>org…...

解决nginx代理SSE接口的响应没有流式返回

目录 现象原来的nginx配置解决 现象 前后端分离的项目&#xff0c;前端访问被nginx反向代理的后端SSE接口&#xff0c;预期是流式返回&#xff0c;但经常是很久不响应&#xff0c;一响应全部结果一下子都返回了。查看后端项目的日志&#xff0c;响应其实是流式产生的。推测是n…...

11 - TCPClient实验

在上一个章节的UDP通信测试中&#xff0c;尽管通信的实现过程相对简洁&#xff0c;但出现了通信数据丢包的问题。因此&#xff0c;本章节将基于之前建立的WIFI网络连接&#xff0c;构建一个基础的TCPClient连接机制。我们利用网络调试助手工具来发送数据&#xff0c;测试网络通…...

React框架搭建,看这一篇就够了,看完你会感谢我

传统搭建框架的方式 在2024年以前&#xff0c;我们构建框架基本上采用官方脚手架&#xff0c;但是官方脚手架其实大概率都不符合我们的项目要求&#xff0c;搭建完了以后往往需要再继续集成一些第三方的包。这时候又会碰到一些版本冲突&#xff0c;配置教程等&#xff0c;往往…...

【rust】rust条件编译

在c语言中&#xff0c;条件编译是一个非常好用的功能&#xff0c;那么rust中如何实现条件编译呢? rust的条件编译需要两个部分&#xff0c;一个是fratures&#xff0c;另一个是cfg。Cargo feature是一个非常强大的功能&#xff0c;可以提供条件编译和可选依赖项的高级特性&…...

一键文本提示实现图像对象高质量剪切与透明背景生成

按照提示词裁剪 按照边框裁剪 要实现您描述的功能,即通过一个文本提示就能自动从图片中切割出指定的对象并生成一个带有透明背景的新图像,这需要一个结合了先进的计算机视觉技术和自然语言处理能力的系统。这样的系统可以理解输入的文本指令,并将其转化为对图像内容的精确分…...

游戏客服精华回复快捷语大全

以黑神话悟空为代表的国内的游戏行业&#xff0c;最近发展非常迅猛&#xff0c;大量游戏玩家需要足够的游戏客服支持&#xff0c;这里整理了游戏客服精华回复快捷语&#xff0c;涵盖了接待客户&#xff0c;游戏级数&#xff0c;游戏外挂&#xff0c;游戏要求&#xff0c;游戏特…...

国内版Microsoft Teams 基础版部署方案

目录 前言Microsoft Teams简介部署前的准备 环境需求账户和许可网络要求部署步骤 初步配置和设置安装Microsoft Teams客户端Teams管理中心配置用户管理 用户添加与分配角色与权限管理通讯与协作 团队和频道管理即时消息和会议功能文件共享与协作安全性与合规性 数据保护措施合规…...

计算机网络 ---- OSI参考模型TCP/IP模型

目录 一、OSI参考模型 1.1 学习路线 1.2 OSI参考模型和TCP/IP模型 1.3 具体设备与具体层次对应关系 1.3.1 物理层 1.3.2 数据链路层 1.3.3 网络层 1.3.4 传输层 1.3.5 会话层、表示层、应用层 1.4 各层次数据传输单位 二、TCP/IP模型 2.1 学习路线 2.2 TCP/I…...

在Windows环境下部署Java的Web项目集成工具的整体流程和详细步骤

好的&#xff0c;以下是一份关于“Windows环境下部署Java的Web项目集成工具”的手把手操作流程&#xff0c;由浅入深&#xff0c;先整体后分部&#xff1a; 一、引言 在现代软件开发中&#xff0c;Java作为一种广泛应用的编程语言&#xff0c;其Web项目开发尤为常见。为了提高…...

9.18作业

提示并输入一个字符串&#xff0c;统计该字符串中字母、数字、空格、其他字符的个数并输出 代码展示 #include <iostream>using namespace std;int main() {string str;int countc 0; // 字母计数int countn 0; // 数字计数int count 0; // 空格计数int counto 0;…...

【算法】滑动窗口—最小覆盖子串

题目 ”最小覆盖子串“问题&#xff0c;难度为Hard&#xff0c;题目如下&#xff1a; 给你两个字符串 S 和 T&#xff0c;请你在 S 中找到包含 T 中全部字母的最短子串。如果 S 中没有这样一个子串&#xff0c;则算法返回空串&#xff0c;如果存在这样一个子串&#xff0c;则可…...

“Fast-forward“ in git-pull result

当你执行 git pull 并且结果显示 Fast-forward 时&#xff0c;这意味着你的本地分支可以直接快进到远程分支的最新提交&#xff0c;没有任何冲突或者需要合并的内容。具体来说&#xff0c;Fast-forward 是一种合并方式&#xff0c;它的特点是将当前分支的指针直接移动到远程分支…...

Oracle(133)如何创建表空间(Tablespace)?

在Oracle数据库中&#xff0c;表空间&#xff08;Tablespace&#xff09;是存储数据的逻辑单位&#xff0c;它由一个或多个数据文件组成。表空间是数据库数据管理的基本结构&#xff0c;了解如何创建表空间对于数据库管理员至关重要。 创建表空间的基本语法 创建表空间的基本…...

Linux中权限和指令

&#x1f4a5;1、Linux基本指令 1.1 mv 指令 mv指令是move的缩写&#xff0c;用来移动或重命名文件、目录&#xff0c;经常用来备份文件或目录。 mv old_name new_name&#xff1a; 重命名文件或目录mv file /path/to/directory&#xff1a; 移动文件到指定目录 roothcss-ecs…...

本地镜像发布到阿里云

本地镜像发布到阿里云 登录阿里云容器镜像服务配置 Docker 登录阿里云容器镜像服务标记你的 Docker 镜像推送镜像到阿里云验证使用阿里云镜像注意事项 将 Docker 本地镜像发布到阿里云&#xff08;Alibaba Cloud&#xff09;容器镜像服务&#xff08;Container Registry&#x…...

【Linux】【Vim】Vim 基础

Vim/Gvim 基础 文本编辑基础编辑操作符命令和位移改变文本重复改动Visual 模式移动文本(复制、粘贴)文本对象替换模式 光标移动以 word 为单位移动行首和行尾行内指定单字符移动到匹配的括号光标移动到指定行滚屏简单查找 /string标记 分屏vimdiff 文本编辑 基础编辑 Normal 模…...

计算机人工智能前沿进展-大语言模型方向-2024-09-18

计算机人工智能前沿进展-大语言模型方向-2024-09-18 1. The Application of Large Language Models in Primary Healthcare Services and the Challenges W YAN, J HU, H ZENG, M LIU, W LIANG - Chinese General Practice, 2024 人工智能大语言模型在基层医疗卫生服务中的应…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...