ServerStorage
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Konteiner, którego zawartość jest dostępna tylko na serwerze.Obiekty spadające z ServerStorage nie zostaną replikowane do klienta i nie będą dostępne z LocalScripts.
Ponieważ ServerStorage jest usługą, można do niej uzyskać dostęp tylko za pomocą metody DataModel.GetService.
Przechowywając duże obiekty, takie jak mapy, w ServerStorage, aż będą one potrzebne, ruch sieciowy nie zostanie wykorzystany do przesyłania tych obiektów do klienta, gdy dołączą do gra.
Scripts nie zostanie uruchomione, gdy zostaną przypisane do ServerStorage, choć ModuleScripts znajdujące się w nich można uzyskać i uruchomić.Zaleca się używanie przez programistów ServerScriptService, aby utrzymać Scripts, które chcą, aby serwer wykonał.
Zauważ, że ponieważ zawartość ServerStorage może być dostępna tylko przez serwer, jego zawartość musi być przypisana gdzie indziej (na przykład Workspace), zanim klienty będą mogły na nią uzyskać dostęp.Rozwijający, którzy wymagają kontenera dostępnego zarówno dla serwera, jak i klienta, zaleca się zamiast tego używać ReplicatedStorage.
Przykłady kodu
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