只有在服务器上才可访问的容器。从 ServerStorage 下降的对象不会复制到客户端,并且不会从 LocalScripts 访问。
作为服务器存储,它只能使用 DataModel.GetService 方法访问。
通过将大型对象(例如地图)存储在 ServerStorage 中,直到需要时,网络流量不会用于传送这些对象到客户端,从而加入游戏。
Scripts 不会在 ServerStorage 中父级时运行,尽管 ModuleScripts 内包含可以访问和运行的可以访问和运行。它是建议开发人员使用 ServerScriptService 来持有 0> Class.Script|Scripts0> 他们希望服务器执行。
注意,作为服务器存储的内容仅由服务器访问,因此它需要在其它地方父级 (例如 Workspace ) 才能让客户端访问。需要容器的开发者请使用 ReplicatedStorage 而不是 Class.Workspace 。
代码示例
ServerStorage Map Rotation
local ServerStorage = game:GetService("ServerStorage")
local ROUND_TIME = 5
local map1 = Instance.new("Model")
map1.Name = "Map1"
map1.Parent = ServerStorage
local map2 = Instance.new("Model")
map2.Name = "Map2"
map2.Parent = ServerStorage
local map3 = Instance.new("Model")
map3.Name = "Map3"
map3.Parent = ServerStorage
local maps = { map1, map2, map3 }
local RNG = Random.new()
local currentMap = nil
local lastPick = nil
while true do
print("New map!")
-- remove current map
if currentMap then
currentMap:Destroy()
end
-- pick a map
local randomPick = nil
if #maps > 1 then
repeat
randomPick = RNG:NextInteger(1, #maps)
until randomPick ~= lastPick
lastPick = randomPick
end
-- fetch new map
local map = maps[randomPick]
currentMap = map:Clone()
currentMap.Parent = workspace
task.wait(ROUND_TIME)
end