第三次作业设计文档
需求:
- 两个以上UI界面
- 运用Collider,Transform,Rigidbody,Ugui,摄像机等常用组件实现一个demo
- 尽可能的不耗费性能
设计:
- 实现一个3d版的吃豆子小游戏。
- 敌人AI有巡逻和追捕player两种状态,player碰到游戏结束
- player由w,a,s,d移动控制
- 为了后续开发方便,代码会有封装重构,现在重构出UI,场景切换,后续还会重构AB打包,事件系统。
Demo:
一:主角移动:
使用的刚体方式移动,接受用户的输入,使用了正方体碰撞器,四元数旋转
二:敌人AI:
使用Navmesh来控制敌人的行动,避免障碍物。敌人在巡逻的时候速度更小,追捕的时候速度更大。敌人身上剔除了刚体组件,因为不需要。
三:事件:
还未实现监听器,先暂时的用着简单的事件。来监听player分数的变化
四:资源加载
暂时使用Resources,使用HashTable缓存加载的资源,还未整合Assetbundle。
五:场景切换:
使用状态机设计模式,都不继承MonoBehavior,提高性能,切换场景就是切换当前的场景状态。
六:UI管理:
UI分为三个类型,正常显示,显示后隐藏其他所有UI,和反向切换,我用模板设计出这三个类型接口,将公共的显示与隐藏,释放,初始化,更新等公共接口抽象于父类IUserInterface,UISystem是管理容器,对所有生成的UIFrm进行资源管理,UITool提供帮助方法,UIMaskMgr控制弹窗的遮罩。UIFactory是创建UIFrm工厂,通常都是创建出来建造然后交给System管理。可扩展,若有不同类型的UIFrm,可继承IUserInterface重写逻辑,避免修改其他类。
内存释放,交给UISystem管理类来单独释放某个UIFrm的资源或者全部释放,释放某个UIFrm的时候会销毁3d成像和代码引用。同时强转垃圾回收。
使用:利用泛型创建panel,同时传递动态参数,将显示与UI界面分离,即UI界面不挂任何一个脚本,UISystem内控制显示Panel的更新,可以自己改写一个游戏循环框架,配合UI。
GameManager:
中介者设计,单例,对外提供各个系统的核心方法,整体游戏都采用游戏循环模式设计。
赞 (0)