摘要
- 本文主要讲解用于Unity开发2D弹幕游戏的个人向的简单框架的设计结构及其思想。
- 在本文中将会讲解到对象池、接口等要素
游戏要素分析
- 在一款2D弹幕射击类游戏中,除了玩家角色以外,场景的对象大致可分为:道具,敌机、弹幕。它们的共同点都是会在出现后按一定的运动轨迹进行运动(静止视为特殊的运动),区别在于角色触碰到道具会得到分数/Buff,而角色触碰到敌机和弹幕会被销毁。
- 玩家、道具、敌机、弹幕这四种游戏要素在场景中的数量一般是升序关系。其中弹幕的数量最多,玩家数量最少,一般只有一个。
- 我把游戏中各种与运动相关的要素,统称为运动学实体。它们从诞生之初,就会按照自身的规则进行运动,直到满足销毁条件为止。因此,“运动”是这些实体的共有属性。
行为接口
- 分析了游戏要素后,可以知道,运动是这些要素的共有属性。从外界看来,无论这些实体的运动形式如何,它们本质上都是一种运动。而从面向对象设计的角度来看,作为调用者,只需要知道该对象是否具备“运动”的能力,而不关心它到底是如何运动的。
- 因此,我希望为每种实体(弹幕/敌机)自定义一种运动规则,同时用统一的途径去开启它们的运动行为。而能够做到这一点的,就是面向对象中的继承与多态。因为C#语言中,类之间只支持单继承。考虑到框架使用者会需要继承不同的父类(MonoBehaviour或者其他父类),因此不使用基类的方案,这样就不会占用了类的继承的位子。
- 也正