找到一个合适的问题标题和这个问题的标签让我感到很难受.
基本上我已经建立了一个游戏,其中将出现几个单位/小怪.现在我对构建系统很感兴趣,因此每个单元都可以应用效果/增益/减益效果来修改单元的属性.这种效果的例子可能是霜效应,它会降低装置的移动速度,促进健康等等.计划是通过脚本实现这些效果,因此可以创建自定义用户效果.
我正在寻找有关如何实现这一点的建议.现在我已经考虑过创建一个效果类.然后每个应用的效果都是类的一个实例,并且会引用它所应用的单位.该效果至少有两种方法,分别应用和取消应用的应用和取消应用方法.
问题在于,它不允许不同的累积百分比方式.比如,应该两次10%增加值100等于120或121.
并不是真的很重要,但它是用C#编码的
您正在使用Effect类进入正确的轨道.但是要保留每个单元的效果列表,而不是将效果引用到单位.如果要获取属性值,请查询所需的属性值,而不是使用apply()和unapply()函数来修改基值(这可能导致基础值因浮点错误而漂移等等).
您的Effect类可以有一个方法Modify(),它将输入值作为浮点值,并返回修改后的值.查询属性最终看起来像这个伪代码:
def get_movement_speed():
value = base_movement_speed() # this is intrinsic to the unit
for effect in movement_speed_effects_list:
value = effect.modify(value)
return value
Run Code Online (Sandbox Code Playgroud)
万一你有这么多效果,效率低下,每次添加或删除效果时都要缓存值并重新计算.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |