在游戏引擎开发中常用的几种设计模式都有哪些

如题所述

第1个回答  2020-06-05
仅仅因为你知道编程语言的语法,不足以让你成为一个程序员。我讨厌这么对你说,但它确实是真的。什么知识将会使你成为一个真正的程序员呢?答案是数据结构,算法和设计模式的知识。语言的语法与知道字母表同义。任何人,我的意思是任何人,可以在一个周内学会编程语言的语法。但是这样的人不可能开发模块化的、灵活的、可维护的应用。
现在我已经打破了你的心情和愿望,现在让我向你介绍设计模式,这将使你成为一个伟大的开发人员。
这有几种设计模式。他们中的大多数在书中都有相关的解释。但是最常用和最喜欢的设计模式如下:
-
单例模式(SingletonDesign
Pattern:
Allows
only):只允许创建一个类的一个实例。
-
策略模式(StrategyDesign
Pattern):通过解耦类行为从而提供灵活性。
-
观察者模式(Observer
Design
Pattern):允许类在不知道任何事情的情况下相互交互。
-
组合模式(CompositeDesign
Pattern):为所有类提供了统一的接入点。
-
模型-视图-控制器模式(Model-View-Controller
Design
Pattern)(MVC):摇滚乐队中的“披头士”。
我将在游戏引擎开发方面讨论每种设计模式(我是一个偏执的游戏引擎开发者)。但是,以下概念适用于任何应用或游戏开发。
单例模式(SingletonDesign
Pattern)
在游戏中,就像在电影里,应该只有一个导演。导演是一个类,这个类在游戏中指挥发生的事情。它控制对象的呈现。它控制位置更新。它将玩家的输入指向正确的游戏角色。
引擎应该阻止创建一个以上的导演类的实例,通过单例设计模式来实现。此设计模式确保为给定类实例化有且只有一个对象。
策略模式(StrategyDesign
Pattern)
在游戏中,你应该将输入控制器和游戏逻辑之间的交互进行解耦。游戏的逻辑应该接收相同类型的输入,而不管输入控制器是什么(按钮,手势,操纵杆)。
尽管对用户每个输入控制器的行为表现不同,但它们必须向游戏的逻辑提供相同的数据。此外,添加或删除输入控制器不应导致游戏崩溃。
这种解耦行为和灵活性是可能的,这归功于策略设计模式。这种设计模式允许通过动态方式来改变行为,而不需要修改游戏的任何逻辑,为你的游戏提供了很高的灵活性。