游戏代码编程教学 游戏代码编程入门( 二 )


游戏开发设计模式应用 事实上,有专门的书籍来解释这一点,我只是在尝试班门弄斧 。我只说几个我初学的时候比较有收获的 。
单体模式:很多人在刚开始接触游戏引擎的时候都会面临一个问题,就是场景切换不破坏数据 。不推荐,有些初学者会犯把数据保存在本地,然后在下一个场景读取的错误 。这种直接的读写操作是不可取的,当你想保存一个GameObject的时候也是没有办法的(当然,序列化对象保存到本地还是不可取的) 。这时,最好将其保存到一个全局静态对象/变量中,这样就引入了singleton模式 。比如有些系统只能有一个入口,不允许随便用,否则会出错,比如典型的文件IO,控制器输入控制 。
数据驱动:在Unity的ScriptObject中明显是数据驱动,其核心思想是在不改变代码的情况下改变数据 。当你想使用数据驱动时,你必须区分什么可以硬编码,什么可以数据驱动 。配置太多会影响开发效率和可读性 。
减少指针跳转消耗:我觉得这是ECS提出来的原因之一 。在大型游戏中,有大量的游戏对象 。此时,如果游戏对象中存在各种指针跳转,那么性能消耗就不容忽视 。所以写代码的时候要注意减少指针跳转,尽量保持内存连续分布,比如使用结构和数组 。当然,持续的内存分配也可以减少内存碎片 。
原型模式(Prototype pattern):这个好像一开始在Cocos2d-x里见过,一个克隆当前对象的接口 。其实在实际游戏中还是挺常见的 。比如GBA的木叶之战,鸣人可以使用暗影分身生成一个新角色,但是攻击力和血量减半 。在Unity中,当Prefab从项目窗口被拖动到场景中时,也使用了同样的思想(应该是这样) 。
注意代码整洁 这个比较经验性,也不能说做的好 。保持代码的可读性,以便您或其他人以后可以阅读 。保持单一职能的责任是必要的 。当你发现某段代码被重复写了好几遍,你就要思考是否应该把它放到一个函数里 。你要明白的是,总会有bug,总有一天你或者别人会再看这些代码 。如果在编写的时候稍微注意一下,后期的维护和重用会相对简单容易 。
可以看看完整的代码本,清理代码的方法和这个视频 。
最后,做游戏很好玩,写游戏代码也很好玩 。我希望你也能享受游戏编程的乐趣!
2019/12/23
【游戏代码编程教学 游戏代码编程入门】Codinggamer
推荐书籍游戏设计、原型与开发 Data Structures for Game Programmers 游戏编程模式 代码大全 代码整洁之道 游戏人工智能编程案例精粹 代码本色:用编程模拟自然系统 Game Coding Complete Game Programming Algorithms and Techniques Shaders for Game Programmers and Artists Unity 着色器和屏幕特效开发秘笈


推荐阅读