![]() |
1
5
你的效果课走对了。但是,在每个单位上保留一个效果列表,而不是有效果指的是单位。当您想要获得一个属性值时,查询您需要的属性值,而不是使用apply()和unapply()函数来修改基值(这可能导致由于浮点错误等导致基础值漂移)。 您的效果类可以有一个方法modify(),它将输入值作为浮点值,并返回修改后的值。查询一个属性最终看起来像这个伪代码:
在不太可能发生的情况下,如果您有太多的效果导致效率低下,请缓存这些值,并在每次添加或删除效果时重新计算这些值。 |
![]() |
2
3
你考虑过 Decorator 模式?在这里可以找到一个实际的例子 tutorial . 我写了一个小例子来说明你的具体情况。班级 加力单位 接受一 单位 对象(可能已装饰或尚未装饰)。当您对此类调用health()时,它将获取 单位 ,并将10%添加到默认100。如果你把它装饰了两次,它会退121。在单个修饰的上调用getDescription()。 单位 返回“Unit+Power up”。同样的,双装饰 单位 返回“Unit+Power up+Power up”。
我没有测试代码或任何东西,只是为了展示这个概念。我建议你拿一份 Head First Design Patterns 如果你认为这是有用的。 |
![]() |
3
0
如果你计划用脚本来做一些效果(这对有很多效果的游戏来说是很好的),你可以继续利用C在运行时编译的能力。 Reference .基本上,您可以在C中编写您想要的所有代码,将字节代码保存在某个地方(可能是级别文件或扩展包的一部分或其他),然后在每次代码关闭时执行相应的C代码。 |
![]() |
4
0
在进行需要动态更改对象状态的游戏时,请看一下组件系统/实体系统设计。 到目前为止,我所看到的关于这个主题的最好的文章是 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 6 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 6 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 6 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |