游戏对象的属性和属性自定义
在星火编辑器中,自定义属性的实现为游戏开发者提供了强大的灵活性,允许开发者根据自己游戏的需要定制和扩展游戏的功能。以下是自定义属性实现的简化和优化步骤:
属性的作用和存在意义
属性用来描述对象所具有的特定特征。星火编辑器预设了单位属性、玩家属性、技能属性、游戏属性,同时提供了一些描述它们特定特征的属性。
在星火编辑器中,属性是保存在对象上的特殊变量。星火编辑器会根据设定的同步规则,自动在服务器和客户端间同步属性,但不会自动同步对象上的普通变量。
单位属性
单位属性是作用于单位对象上的一系列数值。
单位数值属性由基础值、百分比变化值两部分组成;基础值 * (100 + 百分比变化值) / 100 得到实际参与游戏运行的最终值; 在需要选择单位数值属性类型的地方,可以选择的内容有:
- 最终值(实际值)
- 基础值
- 百分比变化值
部分单位属性实际是由两个数值合并而成。
实际值 = 基础值 * (1 + 百分比 / 100)
此外,在数据编辑器中可以定义自定义属性,提供单位属性的所有基础支持,但没有对这个属性做任何假定和实现,你可以自由地决定它叫什么和干什么。
下面是一些常用的编辑器内置单位属性:
攻击
在[伤害结算]中,单位普通攻击的初始伤害等于攻击
。
护甲
在[伤害结算]中,护甲
会在[伤害初始化]事件和[伤害开始]事件之间对伤害做一次修正。
- 当护甲大于0时,每1点护甲可以使单位多承受1%的伤害,此时伤害算法为
最终伤害 = 伤害 / (1 + 护甲 * 0.01)
- 当护甲小于0时,每1点护甲会使单位受到的伤害提升1%,此时伤害算法为
最终伤害 = 伤害 * (1 - 护甲 * 0.01)
生命
在[伤害结算]中,在[伤害前效果]事件之后,受到伤害的单位会被扣除最终伤害数值的生命
。如果单位因此次扣除生命导致生命变为0或者以下,则会触发[伤害击杀]的结算。
值得注意的是,生命
与单位是否存活之间没有必然的关系,直接将单位生命设置为0,并不会发生任何事情,只是这个单位在下一次受到伤害会触发[伤害击杀]的结算(判定成功才会死亡)。
- 单位的生命无法小于0,也无法超过[生命上限]。
- 百分比无效
生命上限
单位的[生命]无法超过生命上限。
- 修改生命上限会导致单位的[生命]按比例缩放。