我正在编写一个简单的角色扮演游戏(用于学习和娱乐),目前我打算想出一种游戏对象之间互动的方法。我有两个需要避免的问题:
- 创建一个可以成为任何东西并且可以做任何事情的巨大游戏对象
- 复杂性 - 所以我避免使用像您在这里看到的基于组件的设计。
因此,在这些参数的基础上,我需要关于游戏对象之间执行操作的良好建议。
例如
- 生物(角色、怪物、NPC)可以对其他生物或物品(武器、药水、陷阱、门等)执行操作
- 物品也可以对生物或物品执行操作。例如,当角色试图打开一个箱子时,陷阱会触发
我想到的是一个PerformAction
方法,它可以接受生物或物品作为参数。像这样
PerformAction(Creature sourceC, Item sourceI, Creature targetC, Item targetI)
// this will usually end up with 2 null params since
// only 1 source and 1 target will be valid
还是我应该这样做?
PerformAction(Object source, Object target)
// cast to correct types and continue
或者说,我应该有完全不同的思路吗?
source.PerformAction(target)
的方式进行操作。 - Anon.