最终效果:
总共有6个文件:Base.cs,action.cs,factory.cs,GameModel.cs,judge.cs,UserInterface.cs
1.judge.cs:负责的是管理各种规则(变量),以及round更新之后,各种规则(变量)变化的函数。
2.factory.cs:负责的是飞碟的管理和生产的单例简单工厂。
在管理飞碟方面,使用一个列表来存放所有的飞碟。之前使用的方法是使用的是2个列表,一个用于存放已使用飞碟,一个用于存放未使用飞碟。这一次作业中,使用id来管理,并使用gameobject中的activeInHierarchy来判断是否可用。根据id来管理的好处非常的多,速度必然是提升的,其次是没有了我之前作业中的频繁的列表增删操作,使用id只有简单的读取和对对象属性设置的操作。
3.action.cs:是一个负责给对象加装动作的简单单例工厂,子弹出膛后的回收动作,子弹与飞碟的触发动作,飞碟落地回收的动作,都由动作工厂进行加工装配
4.UserInterface.cs:处理用户输入,对用户输出执行相应的函数。
5.GameModel.cs:游戏核心代码,负责显示游戏信息,游戏信息使用ui text来显示,uitext的优点在于他不需要像GUI那样需要在ONGUI中渲染,可以写在update中,而且更加美观,而且调试方便,可以在图形界面上直接观察到并实时调整位置。
6.Base.cs:里面包含了接口部分,还有场景控制部分,场景控制主要是根据发射的飞碟数目来调整回合数,记录分数,并且实现用户部分需要使用的接口
总结:1.将规则分离出来。这是非常有意思的,因为这意味着我们在写游戏逻辑部分的时候,可以不用将心思分散在游戏规则上,而且在修改的时候,直接就可以修改,非常方便。2.工厂的使用。已经连续几周的作业用到了工厂。工厂能帮我们管理产生游戏对象,非激活的对象还能暂时存储在缓存中,减少创建的开销,动作工厂,对象工厂分工合作,非常好用。