XNA学习笔记(2)-XNA的编程模型

【用C#写游戏-XNA游戏编程】坦克大战(一) 初探XNA 从初涉编程到学习C#也一年有余了,从今天开始就借一个《坦克大战》来对自己以前学过的知识进行一次汇总和尝试开始写博客,好了,废话不多说,开篇。     XNA中的X表示能够在WindowsXbox和合作伙伴之间达到跨平台的强大的软件工具。N表示“下一代(Next-generation)”,A表示“架构(Architecture)”。XNA是基于DirectX的游戏开发环境,是微软对于 Ma 阅读详情

你使用任何一个框架都得遵从它的编程模型,并遵从它的编程规则。

有如,底层的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应用的核心是事件-响应模型。捕捉键盘/鼠标的事件,并作出响应。主要的工作是响应人类的操作。

 

游戏呢,它有许多内部自发的事件需要响应。拿超级玛丽来说吧,马里奥要是站在那里不动,过来一个乌龟,直接把他咬死了。被咬死是游戏里的乌龟触发的。

这种区别造成了编程时使用的模型不一样。以后的博客会慢慢说。

 

XNA教程(一) 作者:Mike Fleishauer & clayman本文版权归原作者所有,仅供个人学习使用,请勿转载,勿用于任何商业用途。由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。Blog:http://blog.youkuaiyun.com/soilworkclayman_joe@yahoo.com.cn  special thanks to Mike Fleishauer ^_^ 阅读详情

相关推荐

太空船模拟项目:XNA游戏开发实战

性能分析是优化应用程序性能的关键步骤。Visual Studio 2010内置性能分析工具,能够帮助开发者识别性能瓶颈。性能分析器: 可以用来检测CPU使用率、内存分配和性能问题。报告: 生成的性能报告详细记录了执行时间和调用次数,帮助开发者理解程序的行为。性能分析器支持多种类型的数据收集和分析,例如使用“采样”方法,可以在程序运行期间定期捕获程序的运行情况,而“探查”方法可以详细记录函数调用的堆栈和调用次数。理解这些高级功能并正确地使用它们,将极大提升软件的质量和效率。

weixin_42524864的博客 534

在XNA中渲染显示3DsMax中的模型(FBX)

最近在研究XNA,正好将一些学习过程中的心得写下来。XNA中显示模型是需要通过XNA的pipeline来实现的,一般来说,XNA自带了两类3D模型的导入处理器,可以分别处理.FBX文件和.x文件,其中.x文件在DirectX 3D编程中应用得比较广泛,而.FBX文件则能很方便的由3DsMax中导出,所以我决定采用.FBX文件作为模型的载体。(一)让3DsMAX能导出.FBX类型的文件一般来说,如果...

weixin_33910460的博客 305

xna 游戏编程详细资料

xna 编程技术网站的总结,比较有帮助 懒得贴代码了,上传了,

从零3D基础入门XNA 4.0——模型和BasicEffect

从零3D基础入门XNA 4.0(2)——模型和BasicEffect  时间 2014-01-06 02:22:00  博客园-原创精华区原文  http://www.cnblogs.com/mayswind/p/3493696.html 【题外话】 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上。本文接着上一

MinSen 2733

XNA 游戏编程

XNA 游戏编程学习总结2D与3D实现,包含原待碼

XNA 载入3D模型

初学XNA,这是帮助文档上的例子。<br>我照写了一遍,把英文注释换成了中文的。还有部分函数注释太多,没加上,放在空间里。<br>希望能和有这方面兴趣的朋友共同学习。

XNA游戏编程 学习备忘

Matrix.CreateFromYawPitchRoll( float yaw,//Y          float pitch,//X          float roll//Z ) 我想知道旋转次序是什么,但是在msdn上没有找到说明。于是试验了一下,得到的经验是先绕Z轴转,再绕X轴转,最后绕Y轴转。 Matrix.CreateFromAxisAn

Better Explained 759

C#XNA物理效果模型源码

谁说C#做不出好游戏 在这给各位上传几个XNA的物理效果模型源码 这个是复杂应用版本 有源有真相 物体碰撞 重力特效 杠杆 不规则物体 实例有英文注释 研究透了 也能做出像 这种的经典物理小游戏

XNA框架基础——XNA介绍

第1章:XNA介绍 欢迎来到XNA的世界。作为一个游戏程序员,你或许知道 DirectX ,甚至也许具有XNA 框架的基础知识。 这一个章节解释了如何安装 XNA Game Studio Express 和如何以有效率的方式使用它。它也包含相当多的技巧,这些技巧甚至可能对任何一个已经知道基础知识的人都有用。 在下面一些章节中,你将直接地开始开发一些很酷的小游戏。 这部分包含基本的功能和在这...

weixin_30446613的博客 1789

【论文精读】Latent Diffusion

Latent Diffusion

weixin_44934783的博客 4476

基因的富集分析

通过RNA_seq差异表达分析等获得一组基因,想要进一步了解这些基因可能参与哪些生物学过程,具有哪些功能,一般就会用到基因的富集分析了。现在小麦基因注释信息已经可以获得,目前来看包括两套。一个是TGACv1,另一个就是IWGSC1.0。需要用到一个叫“clusterProfiler”的R包。下面用到的数据集来自TGACv1。1、安装source("https://bioconductor.org/b

xxxxx 1万+

XNA简介

Normal07.8 磅02falsefalsefalseMicrosoftInternetExplorer4<objectclassid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui>

JonnyWei的专栏 3463

零代码实战:基于Coze平台打造测试用例生成AI助手

本文详细介绍了如何利用Coze平台零代码打造测试用例生成AI助手,通过智能体和工作流配置,实现需求文档自动解析与结构化测试用例生成。该方案显著提升测试效率,特别适合敏捷开发中频繁变更的需求场景,帮助测试工程师快速应对挑战。

weixin_42526015的博客 209

XNA带来什么

 XNA提出的目标是:“XNA enables studios and publishers to develop better games, more effectively, on all platforms.” XNA提出的目标是非常大的,个人认为其中的两个重点是:1. more effectively,从目前得到的资料看主要包括游戏内容辅助工具和代码frame work两个方面。2. on

燕良@游戏开发 2541

Unity 多线程编程笔记 _Task详解

士大夫

weixin_43405845的博客 4384

SAP PS项目结算实操:从CJ20N到CJ88,手把手搞定项目成本结转与凭证生成

本文详细解析SAP PS项目结算全流程,从CJ20N到CJ88的操作要点,涵盖成本归集、结算规则配置、结果分析及凭证生成等关键环节。特别针对FICO模块中的项目凭证流转问题提供实战解决方案,帮助财务人员规避常见配置错误,提升项目结算效率与准确性。

weixin_26833503的博客 815

关于XNA 2.0 beta

            XNA2.0 beta发布已经快1周了,似乎我应该写点东西了…………………..      So, what’s new?1. 2.0 已经支持visual studio的所有版本了,如果团队开发的话可以方便的使用代码管理工具了。2. 原先的应用程序模型稍稍做了一些改变,可以更方便的访问GraphicDevice和ContentManager.3. 网络支持,这个不说了,

Clayman的专栏 3945

RH850从0搭建Autosar开发环境【2X】- Davinci Configurator之EcuC模块配置详解(上)

RH850从0搭建Autosar开发环境【2X】- Davinci Configurator之EcuC模块配置详解(上)

weixin_42412049的博客 1530

XNA、FNA以及在VS2017中编写XNA

XNA是早期DX SDK支持的C#游戏开发环境,虽然现游戏开发大多是以Unity3D,Unreal 4为主,但是许多独立游戏开发者,特别是2D游戏,依然使用XNA进行开发, 纠其原因,猜测是C#开源且有了跨平台实现。 这可以从许多独立游戏的Switch移植版看出端倪,使用XNA开发游戏依然有一定的优势。 首先是在VS2017中编写XNA,配置见这篇文章。 http://flatred...

weixin_34319374的博客 879

YOLOv8 交通流量监测详解

本文介绍了一个基于YOLOv8的交通流量监测系统,该系统通过深度学习技术实现车辆实时检测、跟踪和分类。系统核心功能包括:1)使用YOLOv8模型检测道路车辆并进行持续跟踪;2)按方向和车型统计车流量;3)支持多区域流量监测和数据可视化。文章提供了完整的代码实现示例,涵盖基础车辆检测、视频流处理和高级数据分析功能。系统还可进一步优化性能,如使用轻量级模型、GPU加速等,并建议扩展车速估算、密度分析等功能。该方案为交通管理提供了有效的实时监测和决策支持工具。

u010117029的博客 346

第7次CCF PTA编程培训师资认证-T1 真题解析(2024下)

B。

lan_in的博客 513

XNA Kick Start

前言        很久以前,翻译了《Managed DirectX9 Kick Start》,在过去的几年中,继续自学,虽然仍未达到自己所希望的目标,不过对托管DirectX以及实时渲染技术已稍有研究。不敢妄谈游戏引擎,但已能实现一些小把戏,以自娱。学习中深感国内资料的匮乏,故凡遇所喜之外文,则边学边翻,期望对有相同喜好之人有所帮助。《Managed DirectX9 Kick St

Clayman的专栏 4196

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

《XNA游戏开发》简介

一、XNA简介 XNA是基于DirectX的游戏开发环境。 以C# 为开发语言 以 .NET Framework 为基础、并加入游戏应用所需之函式库所构成的 XNA Framework 可开发XNA for Windows Phone游戏,Xbox游戏,PC游戏等。

张剑的专栏 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

XNA学习笔记4-model

接着“XNA学习笔记2”中的内容管道说。图片文件、字体文件、.x/.fbx和.fx文件经过内容管道的导入编译等工作,最后通过ContentManager对象的Load方法得到texture、spritefont、model和effect对象。 纹理(或shader)、模型和渲染的关系可以用一个形象的比喻。现在是一个立方体,立方体是模型;渲染就是对立方体的每个部分(这里就想...

aj 233

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

XNA中如何更新模型信息

  一、  更新更新是整个XNA游戏开发的重点,它代表了整个游戏的运行逻辑,从技术上讲可分为输入设备的获取和模型的变换两个方面。1、   获取输入设备的输入信息XNA目前主要支持三种输入设备:Xbox 360控制器、鼠标、键盘。我们暂时主要用到鼠标和键盘。(1)、鼠标状态的获取XNA鼠标包含左键、右键、中键的信息(ButtonState.Pressed、ButtonStat

冰箫寒剑 2321
上一篇: XNA学习笔记(1)-环境搭建
下一篇: Windows Phone7 学习资料汇总。
DarkTower
博客等级 码龄18年 0粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值