ServerStorage
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Un contenedor cuyo contenido solo es accesible en el servidor.Los objetos que descienden de ServerStorage no se replicarán al cliente y no serán accesibles desde LocalScripts.
Como el almacenamiento del servidor es un servicio, solo se puede acceder a él usando el método DataModel.GetService.
Al almacenar grandes objetos como mapas en el almacenamiento del servidor hasta que se necesiten, el tráfico de red no se agotará al transmitir estos objetos al cliente cuando se unan al juego.
Scripts no se ejecutará cuando sean padres de ServerStorage, aunque ModuleScripts se pueda acceder y ejecutar.Se recomienda a los desarrolladores usar ServerScriptService para mantener Scripts que desean que el servidor ejecute.
Tenga en cuenta que, ya que el contenido de ServerStorage solo se puede acceder por el servidor, su contenido deberá ser padre en otro lugar (como Workspace ) antes de que los clientes puedan acceder a él.A los desarrolladores que se requiere un contenedor que es accesible tanto por el servidor y el cliente se les aconseja utilizar ReplicatedStorage en su lugar.
Muestras de código
This is a very simple example of how a multiple map system can be made using ServerStorage.
It creates three dummy models (to take the place of maps), that are parented to ServerStorage. Then, it will load a random map (different to the previous map) and wait a specified duration on a loop.
Developers wishing to integrate something similar into their games should consider measures to ensure players respawn correctly, or go to a lobby during intermission periods.
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