考虑一个使用场景的游戏引擎。现在,一个场景可以有一个演员列表,这些是当前场景中的对象。伪代码可能如下:
class Scene
{
public List<Actor> Actors { get; set; }
....
}
对于游戏循环,引擎会在场景对象上调用Update()方法,然后在所有演员上调用Update()方法。
现在,我的问题是:如果演员需要知道其他演员的情况,有什么好的方法可以让它们进行通信?例如,我可能有一个代表子弹的演员。这个子弹需要知道所有敌对演员(以便子弹可以杀死它们等)。我可以为每个演员提供一个句柄,该句柄引用演员所在的当前场景,但这听起来像是一个坏主意(将这种访问/权限提供给每个演员)。
如果可能的话,我想保持所有演员对其他演员和场景的盲目,并通过某些契约实现行为/通信,但我还没有想出任何东西。