首页 3D游戏引擎入门课程6——事件处理与脚本语言
文章
取消

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

写在前面

本专栏内容均为学堂在线慕课《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类: 在这里插入图片描述

本文由作者按照 CC BY 4.0 进行授权

3D游戏引擎入门课程5——角色动画

3D游戏引擎入门课程7——内存管理与插件机制