毕业设计-基于Unity的餐厅经营游戏的设计与开发(附源码、开题报告、论文、答辩PPT、演示视频,带数据库)

基于Unity的餐厅经营游戏的设计与开发


下载链接:

点我下载资源
一、登陆(Unity2020.3.3f1c1版本)
开始界面
进入游戏后,在开始界面右下角是一个登陆按钮,当玩家点击开始按钮后,会进入登陆面板。

在这里插入图片描述

登录界面
登录面板如下图所示,玩家可以选择输入用户名和密码进行登陆。
对于登陆操作,在客户端,需要监听玩家输入的用户名和密码,在客户端可以对玩家的输入格式进行判断,如果玩家的输入格式有误则直接在客户端提示玩家重新输入,否则将玩家输入的数据进行打包发送给服务器处理。服务器在收到客户短发来的消息后,解析出玩家输入的用户名和密码,服务器则会在user表中进行查找,若不存在,则向客户端返回失败信息,若查找成功,则会在result表中获取该玩家的战绩,将该玩家的战绩打包返回给客户端。客户端在收到服务端的响应后,会对返回的消息类型进行判断,通过返回的结果控制界面是显示登陆成功还是失败。如果登陆成功,将会进入房间列表界面。
在这里插入图片描述
二、注册
注册页面
玩家选择注册按钮将进入注册界面进行新用户注册。
在这里插入图片描述

对于注册操作,在客户端,需要监听玩家输入的用户名和密码,在客户端可以对玩家的输入进行检测,如果玩家输入为空或者两次密码输入不统一,则会直接在客户端提醒玩家重新输入,否则将玩家输入的数据进行打包发送给服务器处理。服务器在收到客户短发来的消息后,解析出玩家输入的用户名和密码,然后在user表中进行查找,如果存在同名,则向客户端返回失败信息,否则在user表中新增一条用户,向客户端返回成功信息。客户端在收到服务端的响应后,会根据返回的消息控制界面UI提示注册成功或者注册失败。

房间管理
创建房间
在登陆成功后,玩家将会进入房间列表界面,如下图所示,房间列表左侧是个人信息界面,包括玩家id、总场数和玩家的最高得分。右侧则是当前可加入的房间列表。玩家可以点击右下角的创建房间按钮进行房间创建。
如果点击创建房间按钮,客户端将会给服务端发起创建房间的请求。服务端在收到客户端发来的创建房间请求后,会在roomList房间列表中新增一个Room,并向发来请求的客户端返回角色类型(RoleType = Chef1),Chef1角色类型表示当前客户端是房主。客户端在收到服务端创建房间成功的响应后,就会控制房间面板入栈,并将当前玩家的信息写入房间面板中,队友的房间面板则显示等待玩家加入。

三、创建房间等待加入界面

加入房间
点击左下角的刷新按钮,右侧的房间列表会进行刷新,刷新后右侧房间列表将获得当前存在的房间,玩家可以点击房间列表中的任意房间中的加入按钮进行加入。
在这里插入图片描述

房间列表界面
点击刷新按钮后,客户端会通过Request类向服务端发起获得当前房间列表信息的请求。在服务端,当前所有的房间都在Server类里面进行管理,在收到客户端发来的房间列表获取的请求后,服务端会将roomList的信息进行打包返回给客户端。客户端在收到服务端返回的房间列表信息后,会根据数据打包的规则进行解析,然后将解析的数据写入房间列表面板中,从而使当前房间列表信息刷新。
在点击需要加入的房间后,客户端会将玩家的点击的房间的房主id进行打包发送给服务端,向服务端发起加入房间的请求。服务端在收到客户端发来的加入房间请求后,会在roomList中通过传送来的id进行查找,如果没有查找到房间,则返回给客户端该房间不存在的消息,否则将该客户端加入到查找到的房间中,并且将有玩家加入的消息广播给房主,让房主所在的客户端更新房间信息。同时也会给发送加入房间的客户端发回加入成功的响应。在收到服务端加入房间成功后的响应后,如果返回的是加入成功,则会进入房间面板。房主所在的客户端在收到有玩家加入的响应后,会进行房间页面的更新。从而房主与非房主都会显示同样数据的房间信息面板。如果有玩家点击了退出房间按钮,则会向服务器端发起退出房间的请求,服务器端接收到退出请求后,判断如果是房主退出,则直接将房间销毁;如果是非房主退出,则将该玩家从房间的玩家列表中移除,处理完后将结果返回给客户端进行页面更新。
在这里插入图片描述

房间加入成功界面

玩家进入房间后,点击开始按钮后,游戏将会进入3秒倒计时,倒计时结束后,玩家就可以通过键盘的上下左右来控制玩家移动,点击鼠标左键来进行菜品制作,制作完成后,菜品会朝着鼠标点击的方向发射,如果菜品到达顾客所在的餐桌即可得分。如果玩家完成了指定的菜品数量,则游戏结束,界面会弹出结算面板。
开始按钮点击后,客户端会向服务端发送开始游戏的请求。服务端在收到开始游戏的请求后,首先会判断发来开始游戏请求的是不是房主,如果不是房主,则会返回开始游戏失败的响应信息给客户端,反之,如果房主,则会向房间的其他玩家发送游戏开始的响应,同时将游戏开始成功的响应发送给房主。客户端在收到服务端返回的消息后,如果返回开始游戏失败,则会在游戏界面中提示“您不是房主,无法开始游戏!”。如果返回开始游戏成功,则会进入游戏界面。而房间的其他玩家也会收到服务端发来的开始游戏的广播消息,从而进入游戏界面。同时,在指定的位置生成玩家。在进入游戏界面时,相机上挂载的游戏脚本会控制相机移动,使相机从UI面板上跟随玩家聚焦到当前玩家,让玩家始终位于视野中央。
在这里插入图片描述

等待房主开始游戏界面
服务器端CameController在执行开始游戏的方法中,在确认房主开始游戏的同时,也会开启一个3秒的倒计时,并将倒计时的时间数值打包发送给房间里的所有客户端。房间的客户端在收到服务端发来的时间数值后,会将获得的倒计时数值写入倒计时面板中并进行展示,从而房间内的玩家都会显示3秒的倒计时,同时在显示倒计时的时候播放倒计时音效。
在这里插入图片描述

开始游戏倒计时界面

服务端在3秒的倒计时结束后,会给房间内的所有客户端发送开始游玩的消息。房间内的客户端在收到开始游玩的消息后,客户端会给当前玩家添加控制移动和制作菜品的脚本,从而使得玩家能通过键鼠输入来控制玩家移动和制作菜品。客户端通过在脚本的生命周期函数FixUpdate()函数中监听玩家的移动输入,在检测到玩家的移动输入时,除了控制当前客户端的玩家移动外,还会向服务端发起玩家移动的请求,以通过服务端将该玩家的移动信息转发给房间里的另一名玩家,另一名玩家所在的客户端通过服务端发来的消息来控制该名玩家的移动,从而实现在另一个客户端也能看到该名玩家进行移动了。
在这里插入图片描述

玩家移动场景
客户端在监测到玩家按下鼠标左键时,就会用脚本控制玩家制作菜品,并播放对应的制作音效,在制作完成后,生成的菜品会朝着之前玩家所点击的方位移动。在控制本地玩家制作菜品的同时,客户端还会向服务端发起制作菜品的请求,将本地的制作菜品信息传送到服务端,以通过服务端向房间内的另一名玩家发送该玩家制作菜品的信息,另一名玩家所在的客户端通过服务端发来的消息来控制该名玩家的制作菜品,从而实现房间中所有客户端菜品制作行为的同步。
在这里插入图片描述

制作菜品场景
做好的菜在移动的过程中,会对碰撞的物体进行检测,如果检测碰撞到了顾客,则表示上菜成功,同时播放得分音效,此时在客户端会随机生成(10, 20)内的得分,然后将分数发送给服务端进行得分处理,服务端在记录玩家上菜的总数达到要求后,就会向房间内广播游戏结束的信息,并将总得分返回给客户端,同时也会对战绩表进行更新。客户端在收到服务端发来的游戏结束消息后,会将服务端发来的分数写入得分面板,并在客户端进行展示。
在这里插入图片描述

游戏结算面板

在游戏中点击退出按钮或者给在结算面板点击任意位置都会退回到房间列表面板。而进入房间列表面板时,客户端通过之前收到的服务端的战绩数据对左侧个人信息面板进行更新。如下图所示。
在这里插入图片描述

个人信息更新界面

在这里插入图片描述

压缩包内容如下(下载链接在文末)
在这里插入图片描述
在这里插入图片描述
下载链接:点我下载资源

猜你喜欢

转载自blog.csdn.net/weixin_43474701/article/details/125491593