你使用任何一个框架都得遵从它的编程模型,并遵从它的编程规则。
有如,底层的I/O读写模型,网络通讯的TCP/UDP模型, Java Serverlet的模型 Hibernate编程模型等。基本上就是框架搭好了,你填充具体的业务代码。模型化的东西在微软肯定是被发挥的淋漓尽致了。
我们可以通过下面这张图来看一下XNA的基本开发模型是什么。
我们看图:
1.首先进行初始化Initialize(),显然是初始化变量,比如比分,血槽什么的,还有一些系统相关的初始化,它自己已经完成了代码base.Initialize() ,我们不够用太关心。
2.然后LoadContent()。顾名思义,就是读取内容,把图片,声音,模型什么的都读进来。
3.之后,进入了一个叫游戏循环的地方(game loop),这个概念有点儿像早期你做windows编程时候接触到的轮询概念(那个 while true循环),不过还是有点儿区别。
游戏循环包括两个主函数 一个是Update()一个是 Draw()。Update实现更新逻辑,Draw()实现更新逻辑对应的图像改变。其实这是一件事情,XNA把它拆成了两层,个人认为这也是一种解耦思想的体现,实现高内聚低耦合。XNA建议Draw()函数中只实现图像改变相关的工作,而把所有逻辑放到Update ()函数中去。
实现起来就是 Update()->Draw()->Update->Draw().....这样的死循环。串起它们来的是一个时间变量 GameTime 。
4.当游戏结束后UnloadContent()(图中写成uploadContent()了)。实现卸载资源。
游戏和一般的UI应用还是有区别的。
一般的UI应用的核心是事件-响应模型。捕捉键盘/鼠标的事件,并作出响应。主要的工作是响应人类的操作。
游戏呢,它有许多内部自发的事件需要响应。拿超级玛丽来说吧,马里奥要是站在那里不动,过来一个乌龟,直接把他咬死了。被咬死是游戏里的乌龟触发的。
这种区别造成了编程时使用的模型不一样。以后的博客会慢慢说。