unity项目开发-基于MVC架构的俄罗斯方块
什么是MVC架构?
MVC代表模型,视图,底层逻辑,三层架构,将这三层架构分开,降低项目的耦合性
用MVC架构开发的游戏有很强的可塑性,如后期修改模型,将2d变成3d,不用修改整个程序,只需要修改对应的架构就行
在unity中分层:
在场景中创建M,V,C3个空物体用来放置对应的物体
在sprites创建3个文件夹分别是M,V,C用来放置对应的文件
在M,V,C对应的空物体上创建对应的脚本

创建完MVC架构后我们要明白MVC的架构原理,由C(逻辑控制)来在M(模型)和V(视图)中调用控制
在C的对应脚本中获取到M和V的组件:

UI界面设置:
背景设置,调整主相机Clear Flags设置将背景将天空盒修改为Solid Color,然后调整颜色
创建一个文字ui,将内容修改为”俄罗斯方块“,调整字体,调整颜色,使字体位置靠上居中

然后需要设置UI按钮:
在主UI下创建一个空的子物体用来放置,分类,按钮
在空物体下创建一个Button(按钮)
然后设置按钮的背景,将背景设置为素材中的图形
然后在按钮下面挂一个Image用来美观
将Image设置为素材中给出的形状
给放置按钮的空子物体挂一个组件

作用是将下面的子物体设置间隔以及边缘距离
将Child Alignment设置为Middle Center(自动调整间隔)
然后可以在Padding里面微调间隔
这样按钮的UI就设计好了

然后设计游玩界面UI:
在主UI下放置一个空物体用来放置游玩界面的UI
游玩界面的UI需要一个暂停,显示当前分数以及最高分数
将空物体靠上居中对齐,然后放置一个暂停按键在合适的位置
创建两个TextUI用来显示分数,放置到合适的位置

接下来是对设置UI的界面设置:
设置UI分为声音,收藏,官网,社交平台4个可交互模块
我们需要做到当设置界面打开的时候其他按钮点击不了
可以在主UI下创建一个图片UI,将图片UI调到全屏然后降低透明度,做出一种模糊的效果
然后在图片UI下创建一个图片UI来当作设置界面的背景
在设置界面放置4个按钮
将遮盖全屏的背景图片Raycast Target勾选,这样被他遮挡住的按钮将点击不了

下面来设计游戏记录UI:
游戏记录UI界面需要记录当前分数,最高分数,游玩次数,以及清空按钮
复制一份游戏设置UI,保留一个按钮,然后调整样式和布局
在游戏记录UI下创建Text设置字体和位置

设置游戏结束界面:
游戏结束界面的组成是游戏结束提示,获得分数,重新开始按钮,返回大厅按钮
按照前面的方式调整UI和字体就行

下面要制作游戏物体,如正方形长方形之类的:
选择一个方块赋复制,然后按住Ctel移动他(每次移动一米)
设置一个空物体用来放置方块
将方块摆成正方形放入空物体用来分类游戏物体
在设置好的正方形下面放置一个空物体,将坐标调整为设置的正方体的中心用来旋转
为了区分构成地图的方块对象和构成游戏物体的方块对象我们需要新建一个标签用来区分
选择一个方块创建成预制体,修改标签为Game,这样就可以将地图和物体区分开来

按照做法完成一共7个游戏物体:

UI界面全部设计完成了,接下来的底层逻辑就是在合适的地方调用合适的UI
下面会涉及到有限状态机以及一个移动UI的插件,所以就不做详细说明了,只会基于俄罗斯方块的原理解释游戏逻辑以及MVC架构
设计好UI后我们需要将所有UI隐藏,在合适的时候显示
游戏的开发分为4个状态开始菜单,游玩界面,暂停,结束
我们需要在合适的时候将游戏的状态设置出来,然后根据当前游戏状态显示对应的UI以及运行对应的底层逻辑,这就是状态机的原理
当游戏初始化的时候将游戏状态的枚举类型设置为菜单,当检测到游戏状态为菜单时就需要将菜单对应的UI激活
在游戏菜单界面除了UI的显示还有背景,背景的大小取决于相机的大小,所有哦我们需要让相机在游戏初始化的时候设定为我们指定的大小
在Ctrl下新建一个相机脚本(因为Ctrl是游戏底层逻辑的分类)
在相机脚本我们获取到主相机的组件,然后创建一个方法用来设定相机的大小(方法类用插件的方法)
然后在菜单脚本通过Ctrl调用这个方法,实现启动游戏后设置相机大小
更多推荐



所有评论(0)