战斗系统包含哪个基础属性,战斗属性有哪些

什么是属性池?属性池是战斗系统中角色属性值的集合。它是战斗结果的基础,包括攻击力、防御力、体力等。属性池由多个属性组成,例如:

攻击力:影响伤害。防御:减少敌人伤害。 HP:角色的生命力。移动速度:角色的移动速度。冷却时间:技能冷却时间。从实现上来说,最直接的想法就是用一个struct来聚合这些属性,并提供外部的读写接口。

//////表示一组属性///public class Name { get } public int Armor { get;但是,许多公司需要对单个属性执行更多操作。例如,血液HUD应该感知健康值的变化(典型的实现是观察者模式),攻击和其他值可以通过武器之类的东西来增加。在这种情况下,属性本身需要被抽象。

从属性最基本的功能开始。属性只有一个代表属性名称的名称。

//////表示对象特征或属性的属性的接口。 ///public Interface IAttribute{ //////属性的名称。 ///string Name { get. }}每个属性都有一个值,可以使用泛型来实现,提供相应的接口供外部使用。例如:

生命条HUD监听OnPostAttributeChanged事件,可以在OnPostAttributeChanged中改变当前的血量,以避免在更新相应表现时超过血量限制。有些属性是外部添加的(buff、装备等),FinalValue表示添加后的最终值//////属性的接口,表示对象的特性或属性。 ///public Interface IAttribute : IAttribute{ //////用于在属性更改发生之前对其进行处理的委托。 //////要更改的属性的名称。 //////属性将更改为的新值。 ///delegate void PreAttributeChange(string attributeName, ref T newValue); //////发生属性更改后进行处理。 //////已更改的属性的名称。 ///更改之前属性的旧值。 //////更改后属性的新值。 ///Delegate void PostAttributeChange(stringattributeName, T oldValue, T newValue); //////属性值更改之前触发的事件。 ///PreAttributeChange OnPreAttributeChanged } //////属性值更改后触发的事件。 { get; set; } //////属性的当前值。 ///T Value { get; ///该属性的解析值。 ///表示应用所有更改和计算后属性的最终值。 ///对于某些属性,由于额外的处理或修改,该值可能与初始“值”不同。 ///它是只读的,因为它派生自“Value”属性以及可能的其他内部状态或条件。 ///T FinalValue { get }}属性加值某些属性从外部接收加值。让我们从奖金本身开始。有两种最典型的奖金。

新增: 示例:攻击爪+12 攻击倍数:示例:战鼓光环+10% 除了这两项加成之外,还添加了覆盖类型加成。例如,这种类型的奖金可以使用如下:如果你击中羊杖并变身为羊,你的护甲值就会降低到0,忽略其他物品。

//////代表不同类型属性值的枚举///变化。 ///public enum AttributeModifyType{ //////增加属性值。 ///加法, //////增加属性。 ///乘法, //////覆盖属性值。 ///* 先前修饰符之后的更改,尤其是///加法和乘法修饰符,将被忽略。 ///覆盖, ///覆盖属性值并///阻止所有其他修饰符。 ///* 特别是,忽略出现的任何OverrideAndBlock 修饰符。 /after. ///OverrideAndBlock} 定义奖励类型后,包含奖励类型和具体奖励值的属性奖励实现如下。

//////属性值修饰符的接口。 ///这可以用于以多种方式调整属性的值。 ///public interface IAttributeModifier{ //////事件触发时触发。限定符的值已更改。 ///Action OnValueChanged { set } ///AttributeModifyType { set; //属性值修饰符的接口。 ///这可以用于以各种方式调整属性的值。 ///public Interface IAttributeModifier : IAttributeModifier where T : struct{ //////Value ///这与Type 结合使用来调整属性的值。 ///T Value { set;包含一组属性加成,如下

//////属性接口。 ///包含属性的修饰符,允许您调整其值。 ///Public interface IFloatingAttribute : IAttribute{ //////添加属性后触发的事件。 ///Action OnModifierAdded { get; } //////删除属性后触发的事件} //////表示是否有修饰符。 ///bool HasModifier { get; } //////返回属性的所有修饰符。 ///IEnumerable GetAllModifiers();}///包含///修饰符的属性的接口。 ///public Interface IFloatingAttribute : IAttribute, IFloatingAttribute where T : struct{ //////向可调整值的属性添加修饰符。 //////要应用的更改类型。 //////此更改所属组的ID。 ///这可用于与组相关的事物。 ///添加了修饰符。 IAttributeModifier AddModifier(AttributeModifyType type, T value=default, int groupId=0); //////从属性中删除修饰符。 voidRemoveModifier(IAttributeModifiermodifier);} 属性加成尤其需要扩展(来自装备、增益等)。 +12,当战鼓光环增加10%攻击力时,+10%的攻击加成是否包括装备所增加的攻击力?每个计划在实施时都有不同的要求。策略模式可用于处理相关计算。

public Interface IAttributeCalculator{ ///.} 属性池将属性抽象出来后,属性池的实现就出来了。聚合各种属性的容器。

//////IAttributeSet 接口表示一组属性。 ///提供添加和检索属性的方法。 ///Public interface IAttributeSet{ //////添加属性后触发的事件。 ///Action OnAttributeAdded { set; } //////删除属性后触发的事件。 //////添加新属性。属性集。 //////要添加的属性void AddAttribute(IAttributeattribute); //////要检索的属性类型。 ///必须实现IAttribute。 ///要检索的属性的名称。 ///如果请求的属性不存在则抛出。/set. ///T GetAttribute(string attributeName) where T : IAttribute //////返回属性集中的所有属性。 ///IEnumerable GetAllAttributes();} 配置取决于属性池实现。通过配置,您可以配置角色具有哪些属性。

例如:定义一组战斗所需的属性,如攻击类型、护甲类型、攻击力、护甲等。

定义角色属性时,从下拉列表中选择相应的属性,并设置相应的默认值。

同样,属性加成也可以通过设置的形式进行设置。例如,创建buff时,可以通过添加属性加成来设置。

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/588052.html

(0)
上一篇 2024年5月27日
下一篇 2024年5月27日

相关推荐

  • 和平精英如何学会跳枪和秒蹲?

    在和平精英中,跳枪和秒蹲是两种非常重要的技巧,它们可以帮助玩家在战斗中更加灵活和敏捷,提高生存能力和战斗力。下面我将详细介绍如何学会这两种技巧。跳枪技巧跳枪是一种在跳跃过程中开枪的技巧,可以让玩家在空中进行射击,从而躲避敌人的攻击。下面是跳枪的步骤和要点:选择合适的时机:跳枪主要用于躲避敌人的攻击或越过障碍物。因此,选择合适的时机非常重要。当敌人射击你时,或…

    游戏快讯 1小时前
  • 和平精英特斯拉怎么变?

    和平精英特斯拉怎么变? 1、先参与活动获得特斯拉的皮肤。 2、进入到对局游戏中。 3、找到可以变化的吉普车。 4、接近之后点击右上角的换装小图标。 5、即可在游戏中变成特斯拉轿车了。 和平精英特斯拉怎么变轿车? 和平精英特斯拉点击r键就可以变身了 和平精英特斯拉是什么变的? 大家需要先参与特斯拉活动,获得特斯拉的皮肤,进入游戏对局中后,打开和平精英游戏中的仓…

    游戏快讯 2小时前
  • 和平精英足球模式什么时候上线?

    和平精英足球模式什么时候上线? 和平精英足球模式在11月份时候上线。 和平精英全球总决赛开赛,是一场关于全球各个地区战术竞技游戏的顶级赛事。于2020年11月24日开赛。在这里,来自全球的24支队伍将会共聚一堂,各路高手轮番竞技,角逐200万美金大奖,争夺顶级竞技冠军宝座。24支队伍将在赛场上为大家带来不同地区的战术特色,展现各自队伍的电竞魅力,给观众带来顶…

    游戏快讯 4小时前
  • 和平精英福利商店怎么兑换?

    和平精英福利商店怎么兑换? 可以通过活动集碎片到你到商店去兑换。   和平精英CPU兑换码? 康师傅兑换码:需要购买官方合作款的香辣牛肉面,然后用微信扫描料包上的二维码。在小程序“召唤空投”中可以获取军需礼包。 玛莎拉蒂兑换码:官网赠送钥匙兑换码,无法从其他平台获取,建议不要购买。 每个CDK仅支持使用一次,不可重复使用。 EMMMyxhjVHMA…

    8小时前
  • 和平精英注册怎么修改?

    和平精英注册怎么修改? 在设置里面有一个修改模式就可以 pupu怎么修改和平精英? 我们只需要打开pu pu,然后点击加载和平精英,然后我们再点击开始的这个按钮,就可以修改和平精英数据 和平精英怎么修改语音? 可以进入游戏内点背包,找到更换语音包的标志,选择自己喜欢的语音包更换 和平精英网名怎么修改? 1.首先要确认你有最少一张改名卡可以使用,才能改名字。 …

    游戏快讯 11小时前