游戏效果图:
游戏运行前,先在VS运行服务端。开始面板,摄像机漫游场景,点击登录按钮进入登录界面。
登录面板和注册面板,点击登录发送登录请求到服务端,查询数据库看是否存在用户名,点击注册就进入注册面板进行注册账户。登录成功进入游戏房间列表。(UI组件都用DoTween做了动画,游戏场景内有音效)
房间列表左边显示当前账户的账号,战绩,点击创建房间可以创建房间,进入等待另一个玩家加入的面板,也就是房间面板;点击刷新可以刷新列表,看是否有其他人创建了房间,点击加入可以加入该房间。
玩家加入房间后,房主点击开始游戏就会进入游戏场景,非房主点击开始游戏则会提示不能开始游戏信息。
进入游戏场景后,可以按上下右左进行人物的控制(有人物的动画,状态机很简单),点击鼠标发射箭矢,箭矢射中物体会有爆炸特效,射中敌人同时发出射中敌人的音效,两方可以在这个游戏场景内对战,每人初始血量为200,每支箭矢的伤害在10~20之间随机,有一方死亡则会显示战败(胜利),然后重新进入房间列表面板。
————————————————————————————————————————————————————————
UML图:
第一张UML:首先有个Server类,主要用来绑定ip和端口号,然后负责接收来自客户端的连接,然后把接收到客户端映射到Client类,在Client类处理接收到的数据,这里通过Message类来解析打包数据,然后把处理好的数据调用Server类处理请求的方法,把来自客户端的不同请求分发给ControllerManager。在Client这个类里面还要做发送数据给客户端,连接数据库等功能。(Client类是服务端接收到客户端连接后映射出客户端的类,是属于服务端的) 在ControllerManager类,根据不同的Request调用不同的Controller,每个Controller继承自BaseController,Controller通过DAO层在连接数据库,数据库有两个表,分别是用户信息表,战绩表,所有Model层有User类和Result类。不同的Controller里面调用不同的方法处理了请求后,返回响应给客户端。
第二张UML:服务端与客户端的通信流程,通过这种方式来传递数据,好处方便解析处理数据,通过不同RequestCode来调用不同的Controller,通过不同的ActionCode来调用不同的方法,每个ActionCode对应一个RequestCode,每个RequestCode对应一个或多个ActionCode,一个RequestCode对应一个Controller。
第三张UML:这是一个类库,包括各种Code,在服务端和客户端都引用,方便开发,我用的是unity5.6版本开发的,所以类库的版本得用2.0,不然Unity识别不了。
第四张UML:这是介绍客户端,首先有个游戏入口类,也就是Gamefacade类,管理了所有的Manager,同时也是一个中介者,每个Manager之间调用方法通过Gamefacade来调用,减少耦合性。游戏以panle为单位,每个panel对应一个继承自Basepanel的panel类,每个panel类对应一个或多个继承自BaseRequest类的request类。(有一个UIPanelTypeInfo的josn文件,包含panel名字和panel路径,方便调用,在UIManager里面解析JSON)
注释:这是我看教程然后自己做的,很全面,涉及面较多,感觉还不错,是一个入门网络游戏的很好实例。(需要源码的朋友私聊,免费分享共同学习)