在服务器端脚本上 GetPlayers 不起作用

我正在学习在 Roblox 制作游戏的 Lua 语言。我从他们的开发者网站上获得了以下代码示例。

Players = game:GetService("Players")
for i, player in pairs(Players:GetPlayers()) do
    print(player.Name)
end

当我将此代码粘贴到本地脚本中时,它能够正常工作,但当我将它粘贴到服务器端脚本中时,它就不能打印出任何信息。我想知道这是为什么,以及从服务器端脚本中获取所有玩家需要使用哪些代码。谢谢

编辑 --------------------------------------------------

我也尝试在服务器端脚本和本地脚本上运行以下代码:

local players = game.Players:GetChildren()

print(typeof(players))

当这段代码在本地脚本上运行时,它会返回“table”,但在服务器端脚本上运行时,却没有返回值。这正常吗?

点赞
用户2860267
用户2860267

我认为你有一个时间问题。 当你将它作为LocalScript运行时,游戏的流程如下:

  1. 服务器启动,玩家数量=0
  2. 玩家加入,玩家数量=1
  3. LocalScript运行-打印出所有1个玩家的列表

当你将它作为服务器脚本运行时,游戏的流程如下:

  1. 服务器启动,玩家数量=0
  2. 脚本运行-打印出所有0个玩家的列表

如果你将你的示例修改为这样:

Players = game:GetService("Players")
print(string.format("Listing all %d player names :", #Players:GetPlayers()))
for i, player in pairs(Players:GetPlayers()) do
    print(i, "- ", player.Name)
end
print("Done listing names")

你应该期望看到这个输出:

Listing all 0 player names :
Done listing names
2020-01-11 20:51:35