我们有一个框架模型和很多组件。几乎每个组件的几乎每个框架Update()
函数都由框架模型控制器调用(比如 Unity3d,所有发生的事情都发生在一个线程中)。我们的组件会"Targets"
改变其中的一些属性(例如位置)并希望提高其他组件"Consumers"
(例如导弹)关于该事实的高度。
如果我们使用普通的 C# 事件模型并从中“引发”事件,"Targets"
我们将得到非常长的Update
调用。一个可以冻结我们所有基于框架的应用程序。所以我们不能像我们想要的那样真正使用 C# 事件。
我们做了什么:对于每个组件,我们通过将所有新数据推送到列表中的操作"Consumer"
订阅事件,并且在更新调用时,我们遍历新数据列表并进行更新。"Targets"
"Component"
所以我的问题是:有没有办法概括这种方法(比如说,如果我们不仅希望目标影响我们的导弹,而且"winds"
还有自己的传入数据(例如方向和温度))以使代码看起来不错?
有没有更正确的方式在框架模型中发送事件?