粉丝657获赞1.1万


ok, 到目前为止,我们已经学习了两块最基础的代码脚本,用来检测碰撞的 script 和用来控制 ui 开关显示的 local script。 那 么接下来呢,我们就要将两者结合一下,来讲述这个教程中最难理解也是最为重要的部分,远程事件。通过远程事件,我们可以实现这么一个功能,玩家触碰到砖块,弹出一个 friend 界面。 刚才我们分别在 script 里完成了触碰到砖块的代码 touch, 然后又在 local script 完成了通过 visible 将 frame 显示或隐藏的代码,接下来将两者进行结合即可实现功能。 但这里有个问题,可是为什么这两块代码要分别在两个不同类型的 studio 里完成呢?这里归根到底就是 roblox studio 开发的游戏是网络游戏,而开发网络游戏就会有一个重要的概念,就是客户端和服务端。有时候呢,我们也会简称为前端和后端。 大家应该都知道,网络游戏需要服务器才能运行,这里的大致流程是,你在你的电脑上进行操作,计算机将你的操作通过网络联系到服务器,服务器再联系到其他玩家,这样一来,其他玩家才能在他们的电脑上看到你的操作。 客户端与服务端的区别呢?简单来说,客户端是用来显示玩家进行游戏时一切你自己能够看到的东西,比如游戏的腰带,场景里的物体,各种交互动作等等。而服务端呢,则是用来储存你游戏中的重要数据,比如角色的等级、经验、拥有的道具等等。 那么在 roblox 里,如果想在服务端上写脚本,其实就是在 script 上编写,而在客户端上写脚本则是在 local script 上编写。 当你理解了这两块内容后,我们再回过头来看刚才我们想要实现的功能,玩家触碰到砖块,然后弹出一个 frame 界面。 玩家触碰到砖块是服务端处理的事情,所以我们用 script 来编写。弹出一个 frame 则是客户端要处理的事情,所以呢,我们就用 local script 来编选。 那么如何将这两个脚本联系到一起呢?就要用到远程事件 remote event, 这里我们看到资源管理器的 protected storage, 我 们在这里新建一个 remote event, 这就是用来联系客户端和服务端的远程事件。我们先打开 script 脚本,首先在 break 点 touch connect function hit 这个 function 的 括号里写上 hit, 然后在下面写上这串代码, game 点 replicated storage, 点 remote event fire client game 点 players 冒号 game player from character hit parent 在 这个代码中,你需要了解的就是这个 fire client, 你 可以直接理解为 fire 发射,把这个 remote event 发射出去, 发射到哪里呢?我们打开 local script 脚本,把刚才的 open button 的 事件删掉,重新写上 game, 点 replicated storage, 点 un client event 冒号 connect 方数, 这里的 un client event 就是 接收这个远程事件。我们再梳理一下,我们在 script 的 脚本中设定,当玩家碰撞到这个 part 后,发射了一个 remote event, 然后在 local script 中接收 remote event, 并且在接到这个事件后,我们把这个 frame 的 visible 设为了 true。 这么一来,玩家碰撞到砖块,然后弹出一个 frame 界面,这个功能就做好了,我们可以测试一下操控角色碰撞到砖块红出面板搞定。 在刚才的例子中,我们实现的是从服务端发送 remote 一 万到客户端的过程。其实反过来,从客户端发送到 remote 一 万到服务端也是很常见。比如我点击某个 ui 界面来为角色增加某种属性等等,都会用到这个反过来的流程。 至于这个反过来的流程具体该怎么写,我这里就不再赘述了,可以试着向你的 ai 老师请教一下。 ok, 到此为止,我们已经学习了客户端、服务端的知识,并且掌握了 rodo studio 的 诸多基础使用方法。