(个人思考)游戏技能的实现

news/2025/10/19 19:40:54/文章来源:https://www.cnblogs.com/sun-shadow/p/19151303

游戏技能实现的三种方式:

1.类似UE中GAS的方式,统一为Ability,并且不处理任何数据逻辑。

https://github.com/No78Vino/gameplay-ability-system-for-unity

2.类似双影其境那种, 简单直观,每个Ability都是独立处理响应、行为。

3.一个SkillController方式。 SkillController驱动所有Skill的更新,Skill+Buff系统去处理战斗内每个Entity的行为。

其实类似第1中方式。不过没有这么明确的限定“属性”一定要在GAS中的GameEffect中进行处理

 

主要目标:本文讨论第3种的实现方式的实现思路。本文并没有讨论“属性”的实现,没有讨论editor实现。

 

第一步:有哪些内容需要实现?

1.触发器

一个triggerCondition可以触发 triggerActionList

一个Skill可以有多个triggerConditionList

 

2.每个skill的状态和具体逻辑,和触发后的逻辑;

skill的Active状态,skill在Active状态下内部逻辑

 

3.每个skill之间的关系。

比如当active skillA的时候 会禁用skillB。

比如有active skillA的时候,不能active skillB

 

4.多个skill绑定ownerEntity

 

第二步:怎么实现

so : ScriptableObject的缩写

我们定义了一个SkillContainer的So,里面包含了所有信息。

1. 一个triggerCondition只是condition,并不关心触发后的triggerActionList是什么。我们使用组合的方式

1.1 triggerCondition是一个so

1.2 triggerActionList的element是so (eventData)。

像一些CommonAction由指定CommonActionSystem去监听执行,比如常见的消耗、发射单发子弹行为。

像一些特殊的Action由当前skill.cs去执行。比如 每隔1s生成一颗环绕的旋转球

 

在实现skill流程后,通过配置去映射流程的实现, 并且,配置去“配”一些通用的功能。 

 

2.skill的话需要定义

2.1

interface ISkill
{
bool Active { get; set; }
bool TryActivate();
void Deactivate();
void Tick();
}

2.2 trigger的action直接监听1.2中的 triggerActionEventData

2.3  针对快节奏的项目,而非大世界的项目。我觉得直接把所有skill看作permanentSkill就行了,如果不需要了,直接Deactive。

如果是战斗内new的skill,也没有问题。

最多在Deactive的时候,把可能的“大数据”给clear或者returnPool。

这样比较简单直接

 

3.skill之间的关系

当整体skill流程完成后,通过skill内的tag数据去做“流程内”的细节处理。

比如在TryActive的函数内,需要检测这个skill和owner active skillList之间的关系。

 

4.我们使用entity+component的方式,而不是面向对象的方式实现。那么我们定义system和component:

class SkillList: Component
{List<ISkill>
}

同时, SkillSystem去Update这个SkillListComponent

class SkillControllerSystem

 

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

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

相关文章

模拟赛T4 分析

题目概述 随机 \(2n\) 个数,值域为 \([0,m]\),求前 \(n\) 个数比后 \(n\) 个数大的概率(对质数 \(P\) 取模),其中 \(10^8\leq P\leq 10^9\)。 数据范围:\(1\leq n,m,T\leq 2000\)。 分析 好好玩。 显然可以转化为…

UUT = Unit Under Test

UUT = Unit Under Test✅ 正确答案: UUT = Unit Under Test🔍 拆解一下:缩写全称含义U Unit 单元、模块、被测设备(即待测件)UT Under Test “正在被测试的”UUT Unit Under Test 正在被测试的单元 / 待测件🧠…

ubuntu系统中containerd的cni网络配置

containerd创建cni网络1、下载cni工具源码包和网络插件包访问地址:https://github.com/containernetworking/pluginshttps://github.com/containernetworking/cni 下载某一个版本的包mkdir -p /root/cni && c…

十月阅读笔记

“时刻准备”是程序员职业生命周期的核心命题。本章开篇便点明,技术领域的迭代永不停歇,唯有以“学徒心态”持续蓄力,才能在浪潮中站稳脚跟。回顾自己初入编程时,曾因满足于现有知识储备,在新技术框架兴起时陷入被…

#20232408 2025-2026-1 《网络与系统攻防技术》实验二实验报告 - 20232408

实 验 报 告课程名称: 网络与系统攻防技术实验序号: 实验一实验名称: 缓冲区溢出攻击学 号: 20232408姓 名: 李易骋指导老师: 王志强必修/选修: 选修实验日期: 2025.10.15一、实验目的 ** 学…

UML图与数据流图

UML图与数据流图UML(Unified Modeling Language,统一建模语言)是一种标准化的图形化建模语言,用于描述软件系统的结构和行为。它主要用于软件工程领域,帮助开发团队以清晰、直观的方式表达系统的设计。 UML图的特…

一文读懂Schnorr签名

Schnorr签名——比特币的“魔法签名”是怎么工作的? 今天我们来聊一个超级酷的东西——Schnorr签名!它就像比特币世界的“魔法笔”,用来确保你的比特币交易安全又省空间。别担心,我会用最简单的方式解释,连小学生…

题解:P2672 [NOIP 2015 普及组] 推销员

题目传送门 是道很好的题 代码实现难度很低很低 但是基础的思维量还是能保证的 但是建议调绿 十五分钟就写完了 关键词:贪心、前后缀先简化题意 给出两个数列 \(疲惫_i\) 、 \(路程_i\) 他们的编号构成集合 \(S\) \[\…

如何选择合适的SAP实施公司?3步锁定靠谱的SAP服务商

企业选SAP实施商需参排名、查案例、实地验;上海达策20年深耕,超3.4万客户覆盖多行业,凭专业成本土可靠实施公司。在数字化转型浪潮下,企业管理软件的重要性日益凸显。作为全球领先的企业资源规划(ERP)系统,SAP凭…

论DCT和IDCT的重要性,汇编SIMD版第一,此贴第二,就是这么狂 :-)

输入: [1.000 2.000 3.000]输出: [ 3.464 -1.414 0.000]重建: [1.000 2.000 3.000] [0] cos(0.0*π/3)*sqrt(1/N)*1.0 + cos(0.0*π/3)*sqrt(1/N)*2.0 + cos(0.0*π/3)*sqrt(1/N)*3.0 = 3.464[1] cos(0.5*π/3)*sqrt(…

这些SAP实施公司哪家强?国内比较好的SAP实施商推荐

国内 SAP 实施公司的选择需重点考察官方认证资质、行业经验及客户案例国内SAP实施公司的选择需重点考察官方认证资质、行业经验及客户案例。以下是综合比较突出的服务商: 上海达策信息技术有限公司 上海达策信息技术有…

25秋周总结5

总结 这周以及上周的最后几天机房一直在互相讲课,现在除了我的内容还差 \(1\over3\) 其他人的内容基本都讲完了。各个板块的讲课都不错,讲课的内容有逻辑、有分类,但是我认为一些同学的课件里面缺少对一些 tricks 的…

博士研究文档管理技术指南

本文详细介绍了博士研究中如何系统管理文献阅读、会议记录、实验跟踪和学术社交的技术方法,包括使用BibTeX管理文献、Git版本控制、实验日志记录等实用技巧,帮助研究人员提高工作效率。博士研究文档管理——跟踪会议…

10/19

UML建模的三部分 事物、关系、图

apisix升级完整流程

Apache APISIX 2.15.3 完整安装指南 一、环境要求组件 最低版本 验证命令 说明etcd 3.5.x etcdctl version 配置中心OpenResty 1.19.x openresty -v 运行环境LuaRocks 3.x luarocks --version Lua包管理工具APISIX 2.1…

10.11-10.18 一周总结

10.11-10.18 一周总结 10.11 比赛 100+100+45+10=255,\(A,B\) 题比较顺利的解决了。\(C\) 题想到了一些与正解相关的地方,但是还差一些地方没有想到。\(D\) 题是一个轮廓线 dp,同时加上一些组合意义就可以解决,没有…

10/19/2025 一周总结

10/13/2025 杂题 单位根反演: \[[n \mid k] = \frac{1}{n} \sum\limits_{i=0}^{n-1} \omega_{n}^{ik} \]在模意义下,可以取 \(\omega_{n}^{1} = g^{\frac{mod-1}{n}}\),其中 \(g\) 为原根。 10/14/2025 模拟赛 T1 没…

程序员做视频难在哪?可能是文案这一关

程序员做技术分享视频,最难的往往不是技术本身,而是如何写出吸引人的视频文案。本文介绍了一个实用的AI提示词模板,专门用于生成B站视频文案脚本。该工具通过结构化的提示词,帮助创作者生成包括开场设计、内容分段…

题解:P12128 [蓝桥杯 2024 省 B 第二场] 质数变革

link 很显然,这道题根本不需要根号分治,直接离线存下来一起修改就行。 我就来讲一下这道题为什么不用根号分治复杂度是对的吧。 如何暴力 显然可以把每次修改看做排名 \(+x\) 或 \(-x\) 的操作,又因为这些修改的方式…