考虑一个使用场景的游戏引擎。现在,一个场景可以有一个演员列表,它们是当前场景中的对象。这个的伪可能看起来像:
class Scene
{
public List<Actor> Actors { get; set; }
....
}
对于游戏循环,引擎对场景对象调用 Update(),然后对所有 Actor 调用 Update()。
现在,我的问题是:什么是允许演员交流的好方法(如果演员需要了解其他演员)?即我可能有一个代表子弹的演员。这颗子弹需要知道所有敌方演员(以便子弹可以杀死他们等)。我可以为每个演员提供一个句柄来引用演员所在的当前场景,但这听起来是个坏主意(假设每个参与者的访问/权力类型)。
如果可能的话,我希望能够让所有演员对其他演员和场景视而不见,并通过一些合同来实现行为/交流,但我还没有想出任何东西。