Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Unity3D自学笔记——星际2技能系统分析(二)Ability(Move, Stop, Attack)

$
0
0

星际2技能系统分析(二)Ability(Move, Stop, Attack)

人族机枪兵,有移动,停止,攻击及兴奋剂四个技能,对应类图如下
这里写图片描述

CAbil

技能的虚基类,所有技能类都派生于它

属性

这里写图片描述
Name: 技能名称
SetId:唯一标识
Alignment:技能瞄准对象
TechPlayer:科技玩家
TechAliasArray:科技别名
SharedFlags:共享标签

XML定义

这里写图片描述

CAbilMove

移动技能基类

这里写图片描述
CmdButtonArray:技能按钮的值,关联CButton对象
FleeRange:当遭遇敌人攻击但又无法还击时,单位将逃跑的距离
FleeTime:单位逃离单次攻击时将会花费的最大时间
FllowAcquireRange:跟随搜索范围
FllowRangeSlop:跟随距离
MinPatrolDistance:最小巡逻距离

XML定义

这里写图片描述

实体类

移动实体类,根节点为继承的基类名, ID为实体类名

这里写图片描述

CAbilStop

停止技能基类

属性

这里写图片描述

XML定义

这里写图片描述

实体类

这里写图片描述

CAbilAttack

攻击技能基类

属性

这里写图片描述
MinAttackSpeedMultiplier:使用该技能后攻击速度提高的最小倍数。
MaxAttackSpeedMultiplier:使用该技能后攻击速度提高的最大倍数。
CmdButtonArray:技能的特定命令相关的数据
AcquireFilters:定义拥有该技能的单位可以自己获取的目标类型
AcquirePriority:当一个以上的同单位技能尝试自动获取目标时,返回最高的“获取有限级”的技能会最先有机会潜在目标。不会获取目标的技能应将之设为0。该值被设为0的技能不会获取目标。
SmartFilters:这些类型对象能被攻击

XML定义

这里写图片描述

实体类

这里写图片描述

执行逻辑

用CAbilMove举例
这里写图片描述
上图中重名文件是因为包含在不同的XML文件中,可以理解为存在与不同的类库里

每个对象除了基本的属性外,还可以挂载其他的模组,如按钮,单位,验证器等,基类挂载了按钮
这里写图片描述
实体类挂载了单位,验证器,移动器,移动器包含了飞行和地面两个
这里写图片描述

可以推算出其逻辑为
1.用户点击Move按钮
2.Move按钮找到当前单位的CMoveAbil
3.Move实体类找到对应的CMover
4.CMover根据Move实体类及单位的属性执行单位移动

类似于MVC模式
View(CButton)
Model(CAbil)
Controller(CMover)

作者:alistair_chow 发表于2016/11/24 18:10:08 原文链接
阅读:46 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>