4

我正在创建一个非常简单的 RTS 游戏作为个人项目。到目前为止,我已经做了一些实验性工作,我的瓷砖、相机和单位移动工作正常 :)

但是,我想为单位选择系统添加功能,这带来了一些问题。我有一个包含单位列表的 Player 类,但我想创建一个 Squad 类,主要是为了制作一些组和属性快捷方式以轻松访问这些组。如果我想在组中添加一个单位,我必须先从当前组中删除该单位,然后再将其添加到新组中。AddUnit 方法将在 Squad 类中,但我不想在所有其他小队中搜索我添加的每个新单位以检查和删除该单位。如果我在 Unit 类中保留对所有者小队的引用怎么办?然后它会更容易被删除,但这可以吗?如果我想将一个单位转移给另一个玩家,也会出现同样的问题,我可以在单位中保留对玩家的引用吗?嗯,我知道我可以,但这可以接受吗?有替代品吗?

4

3 回答 3

3

是的,这是可以接受的,最好有 2 路参考。从容器到物品,从物品到容器。当您对项目(示例中的单元)执行某些操作时,无需在所有容器中搜索此项目即可轻松获取其容器。从单元获取参考会更简单、更快、更易读——它只是更好的设计。

于 2012-05-10T04:42:07.137 回答
3

如果您的语言支持它,您应该使用弱引用,以便可以正确释放容器,而无需将单位的小队显式设置为 null,这很容易出错。

于 2012-05-10T06:04:09.670 回答
0

虽然我同意@dantuch 的说法,即它通常是可以接受的,但此时只有您可以决定这是否是一个好主意,具体取决于您希望将单位和小队(以及玩家)的概念结合起来的紧密程度。

谈论没有小队的单位有意义吗?还是没有播放器?

我意识到我正在用其他问题来回答您的问题,但是尝试以抽象的方式考虑您的模型,您将意识到将这些概念紧密结合是否可以接受,或者是否最好使用上述观察者模式之类的东西在评论中。

于 2012-05-10T09:45:25.743 回答