GetPlayers无法在服务器端脚本上运行

问题描述 投票:0回答:1

我正在学习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。在服务器端脚本上运行时,我什么也没得到。这正常吗?

lua local server-side roblox
1个回答
0
投票

我相信您遇到时间问题。当您将其作为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
© www.soinside.com 2019 - 2024. All rights reserved.