fair 发表于 2006-12-22 20:53:00

XNA GSE入门(五) GameComponent

&lt;DIV class=storycontent&gt; <p>转自:<a href="http://ledgame.meibu.com/ge/?p=31" target="_blank">http://ledgame.meibu.com/ge/?p=31</a></p><p>GameComponent是什么?</p><p>GameComponent在XNA中是实现可视化游戏编程的一个重要方式。从概念上说,GameComponent应该算是一种编程模式,只要按这种模式写出来的代码,就可以在其他XNA项目中重用。这种编程模式非常利于代码的分享,这和XNA定位于免费发放给游戏爱好者是相关的。</p><p>GameComponent有什么用?</p><p>任何一个GameComponent都派生于GameComponent 类,GameComponent类有3个函数可以覆盖(override)</p><p>Draw 添加新的绘图代码</p><p>Update 添加逻辑更新的代码</p><p>Start 添加在游戏初始化时候需要运行的代码</p><p>&nbsp;在VC# 2005 EE里面,我们可以通过选择Project-&gt;Add New Item添加新的GameComponent,并且向导会为我们生成这3个函数的覆盖(override)代码</p><p>Game类里面的DrawComponent函数会依次调用每一个注册过的GameComponent的Draw函数。UpdateComponent则调用注册过的GameComponent的Update函数。在一个Game类里面注册GameComponent,要通过调用Game 类成员变量GameComponents的Add函数,GameComponents是一个GameComponentsCollection的对象。例如:</p><p>this.GameComponents.Add(this.testComponent);</p><p>&nbsp;GameComponent一般用来封装一些用户操作,也可以用来管理用户界面,比如在3D游戏中对第一人称摄像机的控制代码封装在一个GameComponent中,那么其他人需要实现一个FPS游戏就可以直接用了,如果将一些GameComponent做成dll发布,并将这些GameComponent添加到ToolBox里面,还可以实现可视化的编程。也可以将GameComponent作为游戏中的对象,比如一个游戏中的3d人物,把3d人物更新代码和绘制代码都放入一个GameComponent。不过这种用法我觉得是不可取的,因为这已经失去GameComponent类设计本意了。目前老外已经发布了一些好用了GameComponent了,大家有兴趣可以收集来做备用。如果你写出来也个好用的GameComponent,也请和大家分享。我觉得很有可能以后有专门收集XNA GameComponent的网站:) </p>
页: [1]
查看完整版本: XNA GSE入门(五) GameComponent