ServerStorage
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Một thùng chứa mà nội dung chỉ có thể truy cập trên máy chủ.Các đối tượng xuống từ ServerStorage sẽ không sao chép cho khách hàng và sẽ không truy cập được từ LocalScripts .
Vì ServerStorage là một dịch vụ, nó chỉ có thể truy cập bằng cách sử dụng phương pháp DataModel.GetService.
Bằng cách lưu trữ các đối tượng lớn như bản đồ trong ServerStorage cho đến khi chúng được cần, lưu lượng mạng sẽ không bị sử dụng để truyền các đối tượng này cho khách hàng khi họ tham gia trò chơi.
Scripts sẽ không chạy khi chúng được gán cho ServerStorage, mặc dù ModuleScripts bên trong có thể truy cập và chạy.Nó được khuyến nghị các nhà phát triển sử dụng ServerScriptService để giữ Scripts họ muốn máy chủ thực hiện.
Lưu ý rằng vì nội dung của ServerStorage chỉ có thể truy cập bởi máy chủ, nội dung của nó sẽ cần phải được cha truyền ở nơi khác (như Workspace ) trước khi khách hàng có thể truy cập chúng.Các nhà phát triển cần một container có thể truy cập được bởi cả máy chủ và khách hàng nên sử dụng ReplicatedStorage thay thế.
Mẫu mã
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