C#游戏编程资料(5)

2021-02-21 11:57

整理的一些关于C#方面的游戏编程资料

图形设备焦点(如用户切换到了其它应用程序窗口),例如重置或者释放图形设备。这三个事件是固定的,无论什么时候发生,都必须要进行处理。否则,操作系统就要告诉事件处理程序所发生的事情,以至于事件处理程序不得不考虑这些情况。最后一个事件在图形设备改变大小时触发处理,这是一个特殊的事件,因为事件发生后可以取消,可以在程序中决定拒绝处理所发生的事件。例如,假如用户要改变游戏窗口的大小,游戏程序检测到这个事件发生了,但是可以告诉操作系统没有发生什么事,则这个事件就不会完成。这种方法通常用来防止用户在保存窗口应用程序数据之前关闭窗口。

第9-13行代码返回true,表示成功初始化图形设备。否则,捕获抛出的任何DirectX异常并返回false。

事件处理程序

在MainClass类中,有四个事件处理程序来处理上述的四种不同类型的事件,如下:

virtual void InvalidateDeviceObjects(object sender, EventArgs e)

virtual void RestoreDeviceObjects(object sender, EventArgs e)

virtual void DeleteDeviceObjects(object sender, EventArgs e)

virtual void EnvironmentResizing(object sender, CancelEventArgs e)

这四个方法都是受保护(protected)的访问权限并且没有任何实现代码。这需要根据程序响应事件的要求来决定如何编写代码。每个事件方法的第一个参数是sender,发送事件进行处理的对象。目前情况下,sender就是发送消息的Direct3D设备变量。每个事件方法参数的第二个参数是对事件信息的描述。在后面章节中有比较详尽的事件信息的描述。

游戏处理

大部分的游戏框架十分相似,都有独立的方法来执行游戏逻辑,然后绘制当前的场景给用户。此框架也不例外,提供了两个方法:FrameMove()和Render()。

protected virtual void FrameMove()

{

// TODO : Frame movement

}

FrameMove()方法内部没有一行代码,需要手动添加。在方法内可以添加所有实际的游戏逻辑运算、人工智能处理、物理模型、网络通信等等。

protected virtual void Render()

{

if (device != null)

{

device.Clear(ClearFlags.Target, Color.Blue, 1.0f, 0);

device.BeginScene();

// TODO : Scene rendering

device.EndScene();

device.Present();

}

}

Render()方法呈现游戏场景。首先使用已有的Direct3D设备,将屏幕清屏为蓝色,并且开始绘制场景。然后,结束场景绘制并且由Direct3D设备呈现该场景给观众。

下一个方法就是Run()方法,该方法只是一个简单的While循环,循环条件是Created。Created是Form窗体类的bool类型的属性。当窗体是一个合法的Form窗体的时候,Created的值总是true;当Form窗体关闭的时候,返回false。每一次循环,执行游戏逻辑、呈现场景并且让应用程序处理所有事件。其代码为:


C#游戏编程资料(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:等保测评3级-技术测评要求

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: