3D游戏引擎入门课程——事件处理与脚本语言

写在前面

本专栏内容均为学堂在线慕课《3D游戏引擎架构设计基础》中的内容。个人将其转化成文字和图片的版本(个人更加喜欢文字版本的教程,阅读速度更快很多),方便查阅。
原课程链接:3D游戏引擎架构设计基础

事件处理与脚本语言

事件处理与脚本语言概述

事件处理

事件驱动的游戏交互控制:
在这里插入图片描述
游戏引擎的事件处理方式影响着整个引擎架构的设计与风格。事件处理是引擎架构的底层设计,是引擎的两大主线内容之一(另一个是场景管理和渲染渲染)。其中游戏引擎循环架构风格包括三种:

  • 回调驱动框架的交互控制方式

其中事件处理是通过回调函数执行的,示例如下:

在这里插入图片描述
在这里插入图片描述
事件处理机制框架示意:
在这里插入图片描述

  • 基于事件更新的交互控制方式
    在这里插入图片描述
  • 视窗消息泵的交互控制方式
    在这里插入图片描述

上述的事件处理机制中,回调驱动方式主要适用于窗口或外部输入的设备事件,采用的是事件处理机制;基于事件更新的方式主要适用于场景渲染的帧时间更新,可以用回调函数实现更新;视窗消息泵的方式主要适用于在已有的GUI框架中集成交互控制。

事件处理中的设计思想,观察者模式
在这里插入图片描述
应用观察者模式使得事件与事件处理方法在定义时耦合度较小。

脚本语言

指为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言,也是一种编译语言的扩展语言。其语法比较简单,与应用程序密切相关,可以直接调用应用程序函数,一般不具备通用性。其特性包括:直译性、轻量、支持快速迭代、方便易用。常见的脚本语言包括:Python、Lua、JavaScript等。

游戏引擎与脚本的关系示意如下:
在这里插入图片描述
其组合方式包括:
在这里插入图片描述
脚本语言的接口定义:
在这里插入图片描述

事件处理实现实例

OGRE事件处理

OGRE的事件:
在这里插入图片描述
所以OGRE的事件处理中核心是处理渲染事件,主要类FrameListener如下:
在这里插入图片描述
进一步地讨论frameRenderingQueued帧渲染排队事件:
在这里插入图片描述
OGRE的渲染事件监听相关类:
在这里插入图片描述
OGRE中外部事件在OGREBites模块中实现;OGREBites模块的ApplicationContext类是FrameListener类的子类,提供有方便的事件监听接口;OGREBites模块的InputListener结构定义了键盘、鼠标、触摸等输入事件的回调函数;OGREBites模块的其他外部类包括:窗口事件类、GUI的控件事件类等。

ApplicationContext类与事件处理相关的部分:
在这里插入图片描述

Panda3D事件处理

Panda3D事件处理机制中任务的概念:
在这里插入图片描述
Panda3D事件的核心类类图:
在这里插入图片描述
任务类之间的关系:
在这里插入图片描述
AsyncTask类接口:
在这里插入图片描述

事件处理机制和相关类:
在这里插入图片描述
事件处理器的详细解析:
在这里插入图片描述
事件对象定义和处理的一个示例:
在这里插入图片描述

GUI类:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值