在过去的3-4年中,我一直在从事一些业余爱好项目。只是简单的2d和3d游戏。但是最近我开始了一个更大的项目。在过去的几个月中,Soo一直在尝试设计一个游戏对象类,该类可以作为我所有游戏对象的基础。因此,在进行了多次尝试和模子测试之后,我转向了Google,该公司迅速为我指出了一些GDC PDF和PowerPoint。现在,我试图掌握基于组件的游戏对象。
我知道引擎会创建一个游戏对象,然后附加不同的组件来处理诸如健康,物理,网络以及您所做的任何事情。但是我不明白的是,组件X如何知道Y是否更改了对象的状态。就像PhysicsComponent如何知道玩家是否还活着一样,因为健康状况由HealthComponent控制。HealthComponent如何播放“玩家死亡动画”?
我的印象是(在HealthComponent中)是这样的:
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
但是话又说回来,HealthComponent如何知道附加的游戏对象是否附加了AnimationComponent?我在这里看到的唯一解决方案是
检查是否连接了AnimationComponent(在组件代码内部或在引擎侧)
有组件需要其他组件,但这似乎与整个组件设计相抗衡。
像HealthWithAnimationComponent,HealthNoAnimationComponent这样写,如此反复,似乎又与整个组件设计思想相抵触。