多人游戏的房间建立与房间搜索加入的实现
首先建立一个游戏实例
创建一个MPGameinstance 游戏实例类
打开蓝图,在事件蓝图里创建一个自定义事件 命名为HostGame
然后创建一个会话节点(Create Session) 其节点有三个参数和2种返回值
第一个参数是谁创建的,当然是玩家,所以获取玩家控制器
第二个参数是公开的一个会话的最大连接数
第三个参数是LAN 如果你勾上了,那就表示在LAN,也就是局域网房间
图中CreateMessage 是一个函数,只是一个打印控制台函数,可以无视
关键在Open KLevel ByName ,这个节点是打开关卡的意思,值得注意的是打开关卡在多人中有参数
第一个是关卡名称,也就是地图名例如第三人称模板默认的地图ThirdPersonExampleMap
第二个默认勾上
第三个关键参数就是 listen 主机模式必须有listen,监听否则就找不到房间
然后创建搜索房间事件
CreateLoading是我写的加载UI,无视
关键函数,Find Sessions
参数1 玩家
参数2 最大搜索会话返回结果
参数3 是不是局域网搜索
找得到房间后你可以直接加入,或者储存起来,我这里是存起来让玩家自己选要进的房间
最后就是加入房间了!
加入房间关键函数也是 Join Session
把上面储存的会话结果放到第二个参数 ,然后就可以加入房间了
值得注意的是设置
默认生成的pawn 必须是你搞好的角色
一般的游戏不是世界生成,而是服务器创建一个pawn 然后给那个玩家possess,这都是在服务器上运行的,所以当你要这么搞,必须判断是否是服务器,可以用Has Authority网络鉴权 来判断
然后是大家最关注的地图里有玩家,主机怎么携带玩家跳转到其他关卡,其实很简单
关键参数: ServerTravel 例如 ServerTravel 地图名称?listen
使用方法: