在同一个场景里的玩家会受到游戏循环的影响,无法自主探索,停下来交流。可以划分分区或给予不参与游戏的选项。
这里将说明如何创建一个不同的场景并传送。
Teleport的指向是place的话,玩家会在同一个服务器中,传送到不同的场景里。玩家数受到服务器限制。也可以通过传送到不同的服务器,这篇文章仅介绍place间的传送。
不同的place的脚本,事件,workspace,是不同的.不会存在相互的影响。可以用这样的方法来串联使用不同地形编辑器搭建的场景,加载不同的光源。也可以通过不同的循环,界定不同的游戏法则。
当一个场景没有玩家时,会被服务器给注销以节约资源。当需要传送到新场景时,服务器内没有新场景会创建一个新的场景,并执行代码循环。之后有新的传送会被现有的场景中。所以对于大厅等待固定时常然后传送的游戏会有无法解决的问题。
譬如大厅等待60秒,游戏60秒。
当第一批大厅内玩家被传走,大厅关闭。
在30s后,有新玩家进入服务器,开辟新的大厅,开始计时。
当游戏中的玩家返回到大厅时,他们会发现,下一句游戏将会在30s后开局(甚至因为加载而更少)
而这个是由于规则本身带来的问题。所以teleport并不适合于那些对时间有要求的游戏。反而在自由探索世界是一个很好的资源节约。
通信延迟
小游戏场景切换存在加载延迟
小游戏一般使用
hit.Parent:moveTo(Position)
的方式实现传送
通常是在进行当前游戏时候 加载另一个新的地图。(也就是说,本轮投票需要在下一轮才能玩的到)通过这样限制的减少了进入游戏时候的卡顿现象。
大厅
游戏
其中最为明显的范例是 死亡跑酷.
而另一款小游戏则使用全随机下一个游戏,来规避这一种有些不愉快的游戏体验: 史诗迷你小游戏.
顺应用户游戏习惯还是进入游戏时候加载等待(可以用图片遮挡),取决于你的需求。
适合自由世界的探索,将世界地图划分成为小块的加载(类比于天龙八部/诛仙/魔兽世界/剑侠情缘3/天涯明月刀)地图的区分
对与不计时间,玩家可以自由选择的大游戏是更优的选择.
在studio中无法调用传送服务器,需要到player中测试。
此处是一个碰触传送阵的dome
local placeID_0 = 5411490997--传送场景ID
local TeleportService = game:GetService("TeleportService")--服务器调用
local function onPartTouch(otherPart)
local player = game.Players:GetPlayerFromCharacter(otherPart.Parent)
if player then
local Players = game:GetService("Players")
local human=Players:GetPlayers()
local success, result = pcall(function()
return TeleportService:TeleportPartyAsync(placeID_0,human)
end)--pcall函数第一个返回值是函数的运行状态(true,false),第二个返回值是pcall中函数的返回值。
if success then
local jobId = result
print("Players teleported to "..jobId)
else
warn(result)
end
end
end
script.Parent.Touched:Connect(onPartTouch)
通过pcall和之后的if success语句,可以确保执行的安全。
本文地址:https://blog.csdn.net/Dusk_Rain/article/details/107534160
如对本文有疑问, 点击进行留言回复!!
朗琴M580多功能蓝牙音箱怎么样 朗琴M580多功能蓝牙音箱评测
如何安装自己下载好的Windows10系统 电脑加载win10镜像系统
Windows10系统遇到"不能打开要写入的文件"怎么办
win10自带录屏失效怎么办 win10自带录屏功能失效解决方法
win10网络适配器不见了怎么办 网络适配器消失不见的解决方法
win10系统电脑蓝屏错误代码0xc000000d怎么解决 开机0xc000000d修复引导
网友评论