banner
Olimi

Olimi

SCUT 小菜鸡
github
bilibili

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 類:
在這裡插入圖片描述

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。