塞特与赛事

时间:2014-05-13 09:05:50

标签: c# events delegates unity3d setter

我目前正在Unity中玩游戏。想象如下:你有一个由4x4字段组成的游戏区域,每个字段都可以放一张卡片。你对抗敌人。每张卡都有所作为。 (想想Magic:The Gathering)

在我的游戏中,我有一个类GameMaster,它将所有内容保存在一起,并进行主要计算。我还有一个基本的课程“卡片”。

如果我使用卡片,我需要将此卡片的信息传递给GameMaster。你会如何做到两者之间的联系?数据需要在OnMouseDown()事件上传递。

我会用一个二传手。所以在OnMouseDown()事件中我会调用GameMaster.AddCard(cardData);

其他人对我说,我应该使用事件。我知道事件更通用,它们对于像OnMouseDown()这样的东西很好;的OnClose();可以在任何地方使用的东西,你无法预测它们将被调用的地方。那么说,我的代码通过使用事件更加分离。我有点怀疑,因为这种关系永远不会改变。这是我游戏机制的一部分。

然后,有人说,“你会怎么测试它?”这是事实。通过事件,测试可能更容易。

所以,问题是:什么时候不做TDD,哪个更好?使用TDD时,哪个更好?

此外,卡片所做的事情相当复杂,而且真的各不相同。所以我虽然做了几个函数,如DoublePoints();双倍时间(); MakeSpecialMOveXYZ();等等这些功能因卡而异。将它们的代表从我的Card-Class传递给我的GameMaster卡是没关系的吗? (通过二传手或事件)

1 个答案:

答案 0 :(得分:0)

在你的情况下,我会使用setter。事件是实时/异步过程的更多方式。

  

他们说,我的代码通过使用事件更加分离。

这完全取决于实施。这两种方法都可以生成解耦代码。

  

通过事件,测试可能更容易。

我不同意,但话又说回来,我不是QA专家。