多人游戏的房间建立与房间搜索加入的实现

首先建立一个游戏实例
image-1657732181364

创建一个MPGameinstance 游戏实例类

打开蓝图,在事件蓝图里创建一个自定义事件 命名为HostGame
然后创建一个会话节点(Create Session) 其节点有三个参数和2种返回值
第一个参数是谁创建的,当然是玩家,所以获取玩家控制器
第二个参数是公开的一个会话的最大连接数
第三个参数是LAN 如果你勾上了,那就表示在LAN,也就是局域网房间
图中CreateMessage 是一个函数,只是一个打印控制台函数,可以无视
关键在Open KLevel ByName ,这个节点是打开关卡的意思,值得注意的是打开关卡在多人中有参数
第一个是关卡名称,也就是地图名例如第三人称模板默认的地图ThirdPersonExampleMap
第二个默认勾上
第三个关键参数就是 listen 主机模式必须有listen,监听否则就找不到房间
image-1657732224747

然后创建搜索房间事件
CreateLoading是我写的加载UI,无视
关键函数,Find Sessions
参数1 玩家
参数2 最大搜索会话返回结果
参数3 是不是局域网搜索
找得到房间后你可以直接加入,或者储存起来,我这里是存起来让玩家自己选要进的房间

image-1657732248189

最后就是加入房间了!
加入房间关键函数也是 Join Session
把上面储存的会话结果放到第二个参数 ,然后就可以加入房间了
image-1657732260954

值得注意的是设置
默认生成的pawn 必须是你搞好的角色
一般的游戏不是世界生成,而是服务器创建一个pawn 然后给那个玩家possess,这都是在服务器上运行的,所以当你要这么搞,必须判断是否是服务器,可以用Has Authority网络鉴权 来判断
image-1657732279674

然后是大家最关注的地图里有玩家,主机怎么携带玩家跳转到其他关卡,其实很简单
关键参数: ServerTravel 例如 ServerTravel 地图名称?listen
使用方法:
image-1657732295988