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

Unity 从0开始编写一个技能编辑器_02_Buff系统的生命周期

工作也有一年了,对技能编辑器也有了一些自己的看法,从刚接触时的惊讶,到大量工作时觉得有一些设计的冗余,在到特殊需求的修改,运行效率低时的优化,技能编辑器在我眼中已经不再是神圣不可攀的存在的,所以可以开始正式进行技能编辑器的编写工作了。

首先 无论是塔防 MOBA 还是MMO,buff机制都是不可或缺的一部分,buff可以看作是由Timer实现的一种计时器,即以时间为单位执行一些脚本事件 比如:敌方对我造成dot伤害(每多少秒灼烧(被作为target释放技能)),buff也具有层数 我被友军上了一层buff,每一层都会加一些攻击力。
也有立即生效的(start)buff 和 被移除时 (end)生效的buff

所以可以规定buff的生命周期如下所示

在这里插入图片描述
1.当不能添加该种类Buff时,只有OnBuffAake()和OnBuffDesty(将被执行)。
2.当Buff被中断时,OnBuffDesty(不会被执行)。(如被施加了buff的主体死亡被回收)
3.当Buff被Remove时,tick逻辑将不再执行
所以完整的buff流程应该是

1.在被添加的一帧执行OnBuffAwake
2.下一帧执行OnbuffStart
3.OnbuffStart的同一帧OnBuffUpdate执行逻辑 OnBuffModifyLayer()层数修改改数性 Tick则执行周期效果
4.Buff lastrtime==0时buff移除 执行end脚本
5.OnbuffDesatory buff移除

在工作时 加buff时会有一些让策划误解的情况,就是 start脚本何时执行?重复添加buff要不要执行,要不要累计层数,是否刷新buff时间,还是累计时间,所以应该具有如下设计枚举这些情况

    //重复添加同一种Buff时的行为public enum BuffMutilAddType{resetTime,                     //重置Buff时间multipleLayer,                 //增加Buff层数multipleLayerAndResetTime,     //增加Buff层数且重置Buff时间multipleCount                  //同种Buff同时存在多个,互不影响}

依照本文流程图可设计buffsystem接口,代码如下

ublic interface IBuff
{/// <summary>/// Buff启用时,生效前(即便该Buff不可作用于对象也会先执行)/// </summary>public void OnBuffAwake();/// <summary>/// Buff开始生效时/// </summary>public void OnBuffStart();/// <summary>/// Buff移除时(用于移除效果)/// </summary>public void OnBuffRemove();/// <summary>/// Buff销毁时(用于执行移除时效果)/// </summary>public void OnBuffDestroy();/// <summary>/// 更新周期性效果计时/// </summary>public void OnBuffUpdate();/// <summary>/// Buff层数变化时/// </summary>/// <param name="change"></param>public void OnBuffModifyLayer(int change);/// <summary>/// 开始周期性效果/// 如果已经开启过(无论是否在之后停止了),则重置计时器并重新开始/// </summary>/// <param name="interval">周期时间</param>public void StartBuffTickEffect(float interval);/// <summary>/// 停止周期性效果/// </summary>public void StopBuffTickEffect();/// <summary>/// 重置Buff以复用/// </summary>public void Reset();/// <summary>/// 重置总体时间/// </summary>public void ResetTimer();/// <summary>/// 初始化/// </summary>/// <param name="target">Buff目标</param>/// <param name="caster">Buff来源</param>public void Initialize(IBuffHandler target, GameObject caster);/// <summary>/// 让BuffStack+=i/// </summary>/// <param name="i">改变的层数,可以为负</param>public void ModifyLayer(int i);/// <summary>/// 设置Buff是否生效。/// 不生效时,Buff的所有计时器也会暂停/// </summary>/// <param name="ef"></param>public void SetEffective(bool ef);/// <summary>/// 如果Buff名为空,就会视为不可使用的空Buff/// </summary>public bool IsEmpty();}

后续下篇文章我会给出buff类的设计 如stack flag的规划 icon effect 名称等等的具体buff类的设计。欢迎大家批评指正和评论区讨论(IBuffHandler 类我们先不管他)

相关文章:

Unity 从0开始编写一个技能编辑器_02_Buff系统的生命周期

工作也有一年了&#xff0c;对技能编辑器也有了一些自己的看法&#xff0c;从刚接触时的惊讶&#xff0c;到大量工作时觉得有一些设计的冗余&#xff0c;在到特殊需求的修改&#xff0c;运行效率低时的优化&#xff0c;技能编辑器在我眼中已经不再是神圣不可攀的存在的&#xf…...

计算机网络简答题

第一章 计算机网络 1.因特网是一个世界范围的计算机网络,记一个互联了遍及全世界的计算机设备的网络。 2.计算机网络将众多分散的、自治的(一台坏了不影响其他)计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 3.计算机网络的组…...

探索Java 8 Stream API:现代数据处理的新纪元

Stream流 Stream初探&#xff1a;何方神圣&#xff1f; Stream流是一种处理集合数据的高效工具&#xff0c;它可以让你以声明性的方式处理数据集合。Stream不是存储数据的数据结构&#xff0c;而是对数据源&#xff08;如集合、数组&#xff09;的运算操作概念&#xff0c;支…...

vim 删除光标到最后一行的所有内容

在 Vim 中删除从光标所在位置到文件末尾的所有内容 删除从光标所在位置到文件末尾的所有内容使用 dG 命令 参考 删除从光标所在位置到文件末尾的所有内容 使用 dG 命令 确保你在正常模式下&#xff08;按 Esc 键&#xff09;。移动光标到你想要开始删除的位置。输入以下命令&…...

k8s之kubelet证书时间过期升级

1.查看当前证书时间 # kubeadm alpha certs renew kubelet Kubeadm experimental sub-commands kubeadm是一个用于引导Kubernetes集群的工具&#xff0c;它提供了许多命令和子命令来管理集群的一生周期。过去&#xff0c;某些功能被标记为实验性的&#xff0c;并通过kubeadm a…...

5G消息 x 文旅 | 一站式智慧文旅解决方案

5G消息 x 文旅 | 一站式智慧文旅解决方案 文旅 x 5G 消息将进一步强化资源整合&#xff0c;满足游客服务需求、企业营销需求、政府管理需求&#xff0c;推进文化旅游项目的智慧化、数字化&#xff0c;增强传播力、竞争力和可持续性。5G 消息的“原生入口”、“超强呈现”、“智…...

如何评估员工在新版FMEA培训后应用知识的效果?

随着制造业的快速发展&#xff0c;新版FMEA已成为企业提升产品质量、减少故障风险的关键一环。然而&#xff0c;培训只是第一步&#xff0c;如何有效评估员工在新版FMEA培训后应用知识的效果&#xff0c;才是确保培训成果转化的关键所在。 评估员工知识应用效果的首要步骤是制定…...

python脚本之解析命令参数

import requests import argparseprint(f"{__name__}:start")parser argparse.ArgumentParser(description使用方法) parser.add_argument(-p, --prefix, typestr, help域名) parser.add_argument(-t, --token, typestr, helptoken) parser.add_argument(-i, --queu…...

当JS遇上NLP:开启图片分析的奇幻之旅

前言 在当今科技飞速发展的时代&#xff0c;JavaScript&#xff08;JS&#xff09;作为广泛应用的编程语言&#xff0c;展现出了强大的活力与无限的可能性。与此同时&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域也正在经历着深刻的变革与进步。 当这两者碰撞在一…...

trpc快速上手

tRPC (Type-safe Remote Procedure Call) 是一个用于构建类型安全的 API 的框架&#xff0c;它能够在前端和后端之间共享类型&#xff0c;确保类型安全性。这对于使用 TypeScript 的项目特别有用&#xff0c;因为它消除了前后端类型不一致的问题&#xff0c;提高了开发效率和代…...

知识图谱存在的挑战---隐私、安全和伦理相关和测试认证相关

文章目录 隐私、安全和伦理相关测试认证相关 隐私、安全和伦理相关 从部署拓扑结构而言&#xff0c;知识图谱技术以数据为核心、数据库为载体的方式来存储&#xff0c;有单机、云平台、集群及其组合的部署方式&#xff0c;结合大数据平台、云平台、业务系统、灾备、网络系统及其…...

课时155:脚本发布_简单脚本_命令罗列

2.1.1 命令罗列 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 目的&#xff1a;实现代码仓库主机上的操作命令功能即可简单实践 实践 查看脚本内容 #!/bin/bash # 功能&#xff1a;打包代码 # 版本: v0.1 # 作者: 书记 # …...

借助ollama实现AI绘画提示词自由,操作简单只需一个节点!

只需要将ollama部署到本地&#xff0c;借助comfyui ollama节点即可给你的Ai绘画提示词插上想象的翅膀。具体看详细步骤&#xff01; 第一步打开ollama官网&#xff1a;https://ollama.com/&#xff0c;并选择models显存太小选择的是llama3\8b参数的instruct-q6_k的这个模型。 运…...

PyTorch -- Visdom 快速实践

安装&#xff1a;pip install visdom 注&#xff1a;如果安装后启动报错可能是 visdom 版本选择问题 启动&#xff1a;python -m visdom.server 之后打开出现的链接 http://localhost:8097Checking for scripts. Its Alive! INFO:root:Application Started INFO:root:Working…...

基于xilinx FPGA的QSFP调试使用经验

1 概述 本文用于记录QSFP在调试使用时遇到的一些经验教训&#xff0c;防止后来者踩相同的坑。 参考手册&#xff1a; 《AMQ28-SR4-M1_V1.0》 《QSFP-DD-Hardware-rev4p0-9-12-18-clean》 2 QSFP简介 QSFP&#xff08;Quad Small Form-facor Pluggable&#xff09;即四通道SFP…...

WPF 使用Image控件显示图片

Source属性 Source属性用来告诉Image组件要展示哪张图片资源的一个入口&#xff0c;通常是图片的路径。也许是本地路径&#xff0c;也许是网络路径。 本地图片路径加载方式 使用相对路径&#xff0c;相对于工程目录的路径&#xff0c;当设置Width属性时&#xff0c;图片会等…...

合肥工业大学内容安全实验一:爬虫|爬新闻文本

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :合肥工业大学实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付…...

自动驾驶---Perception之视觉点云雷达点云

1 前言 在自动驾驶领域&#xff0c;点云技术的发展历程可以追溯到自动驾驶技术的早期阶段&#xff0c;特别是在环境感知和地图构建方面。 在自动驾驶技术的早期技术研究中&#xff0c;视觉点云和和雷达点云都有出现。20世纪60年代&#xff0c;美国MIT的Roberts从2D图像中提取3D…...

maven 显式依赖包包含隐式依赖包,引起依赖包冲突

问题&#xff1a;FlinkCDC 3.0.1 代码 maven依赖包冲突 什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包&#xff0c;有多个不同的版本&#xff0c;因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的。每个显式声明的类包都会依赖于一些其它…...

Spring应用如何打印access日志和out日志(用于分析请求总共在服务耗费多长时间)

我们经常会被问到这样一个问题。你接口返回的好慢呀&#xff0c;能不能提升一下接口响应时间啊&#xff1f;这个时候我们就需要去分析&#xff0c;为什么慢&#xff0c;慢在哪。而这首先应该做的就是确定接口返回时间过长确实是在服务内消耗的时间。而不是我们将请求发给网关或…...

VOOHU沃虎:从SFP到SFP28不同光模块如何选笼子?

在高速通信设备的设计中&#xff0c;SFP光模块笼子是一个看似简单却至关重要的组件。随着数据传输速率从1G演进到10G、25G乃至更高&#xff0c;光模块对笼子的要求也在发生质的变化。SFP&#xff08;1G&#xff09;、SFP&#xff08;10G&#xff09;、SFP28&#xff08;25G&…...

效率飙升,跳过proteus安装配置,用快马ai秒建仿真项目

最近在做一个温度监测系统的项目&#xff0c;需要验证电路设计的可行性。按照传统方式&#xff0c;我得先下载安装Proteus软件&#xff0c;配置各种库文件&#xff0c;光是环境准备就得折腾半天。不过这次尝试了用InsCode(快马)平台的AI功能&#xff0c;整个过程变得异常高效。…...

自动药片装瓶机 No.360 三菱 组态王 基于PLC的药片装瓶自动控制系统 我们主要的后发送...

自动药片装瓶机 No.360 三菱 组态王 基于PLC的药片装瓶自动控制系统 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面车间里那些药片装瓶机&#xff0c;以前人工摆瓶子、数药片&#xff0c;慢就算了&#xff0c;…...

Spring AI 流式输出底层原理解析

在 AI 应用开发中&#xff0c;流式输出早已成为提升用户体验的核心能力——像 ChatGPT 那样的打字机式实时回复&#xff0c;既能避免用户长时间干等&#xff0c;又能解决长连接超时问题&#xff0c;是 AI 产品的必备特性。 一、流式输出的两种技术&#xff0c;不是对立而是“底…...

自学嵌入式第三天

选择排序 先找再换&#xff0c;每轮先找最小的再做交换每一轮的第一个数作为最小&#xff0c;从第二个数开始比较选出最小值交换到第一个位置。插入排序 一列数从第二个开始作为要插入的数a&#xff0c;逐个向前比较&#xff0c;比a大的数向后移一位&#xff0c;直到遇见比a小…...

手把手教你用VSCode给Ai-WB2-12F烧录固件(含串口调试技巧)

手把手教你用VSCode给Ai-WB2-12F烧录固件&#xff08;含串口调试技巧&#xff09; 在物联网开发中&#xff0c;固件烧录是最基础也是最重要的环节之一。对于Ai-WB2-12F这款热门Wi-Fi/BLE双模模组&#xff0c;掌握高效的烧录方法能显著提升开发效率。本文将详细介绍如何利用VSC…...

GIL移除≠自动线程安全!揭秘Python 3.13+中asyncio+shared_memory+numpy.ndarray三者交汇处的5个未公开竞态漏洞

第一章&#xff1a;Python无锁GIL环境下的并发安全本质重构当Python脱离CPython解释器的全局解释器锁&#xff08;GIL&#xff09;约束——例如在PyPy的STM模式、Jython、Cython多线程扩展&#xff0c;或新兴的Rust-Python绑定&#xff08;如PyO3 async-std&#xff09;中运行…...

Excel也能搞定GRR!不用买昂贵软件,这份保姆级模板和计算指南请收好

Excel也能搞定GRR&#xff01;不用买昂贵软件&#xff0c;这份保姆级模板和计算指南请收好 在制造业质量管理中&#xff0c;测量系统分析&#xff08;MSA&#xff09;是确保数据可靠性的基石。但现实情况是&#xff0c;许多中小企业和初创团队面对动辄上万元的专业统计软件只能…...

Doris集群部署避坑指南:3FE+3BE配置全流程(含Java环境配置与常见问题解决)

Doris集群部署实战&#xff1a;3FE3BE高可用架构搭建与深度调优 在企业级数据分析场景中&#xff0c;Doris凭借其出色的实时分析性能和高并发处理能力&#xff0c;已成为众多企业的首选OLAP引擎。本文将基于3FE&#xff08;Frontend&#xff09;3BE&#xff08;Backend&#xf…...

AI报告文档审核赋能数据不出域:IACheck重构机械制造行业本地化质量管控体系

在机械制造行业不断推进数字化与智能化转型的过程中&#xff0c;“数据不出域”逐渐从合规要求演变为一种核心能力&#xff0c;即在保障数据安全的前提下&#xff0c;实现数据的高效利用与价值转化&#xff0c;而在这一背景下&#xff0c;检测报告作为连接生产过程与质量评估的…...