Kolejka jest liniową strukturą danych z zbiórką przedmiotów, która jest albo pierwsza w pierwszym przypadku lub priorytetowa według ustalonego priorytetu lub 1>pierwsza1> w drugim przypadku. 4>
Kolejki pamięci są użyteczne do przetwarzania i przechowywania informacji użytkownika, takich jak poziomy umiejętności, aby ułatwić matchmaking oparty na Twoich preferowanych kryteriach. Na przykład możesz dodać miejsce startowe lobby jako punkt wyjścia swojego doświadczenia, użyć kolejek pamięci jako centralnego systemu przechowywania informacji użytkownika dostępnego z wiel
Zdobywanie kolejki
Aby uzyskać kolejkę, wezwij MemoryStoreService:GetQueue() z imieniem nazwa , które jest globalne w doświadczeniu dla każdego skryptu do uzyskania dostępu, i opcjonalnym time out invisibility w sekundach, co zapobiega duplikowanym przetwarzaniem tego samego przedmiotu kolejki. Time out invisibility jest 30 sek
Utworzenie pustej kolejki
local MemoryStoreService = game:GetService("MemoryStoreService")local queue = MemoryStoreService:GetQueue("Queue1")
Gdy w kolejce przetwarza się przedmiot, czas wygasa dla niego określony, aż do tego czasu określony przez inny serwer, ponieważ wiele serwerów może aktualizować kolejkę równocześnie. Chociaż jest to oczekiwane, aby ukończyć obie operacje czytania i usuwania dla przedmiotu podczas czasu
Po uzyskaniu kolejki wykonaj jedną z następujących funkcji, aby czytać lub zapisać dane w niej:
Funkcja | Akcja |
---|---|
MemoryStoreQueue:AddAsync() | Dodaj nowy przedmiot do kolejki. |
MemoryStoreQueue:ReadAsync() | Przeczytaj jeden lub więcej pozycji z koszyka jako jedną operację. |
MemoryStoreQueue:RemoveAsync() | Usuń jeden lub więcej przedmiotów wcześniej przeczytanych z koszyka. |
Dodawanie danych
Aby dodać nowy pozycion do kolejki, wezwij MemoryStoreQueue:AddAsync() z wartością pozycji, czasem wygasania w sekundach i opcjonalnym priorytetem przedmiot. Jeśli chcesz utrzymać swoją kolejkę w sekwencji FIFO, możesz pozostawić priorytet pusty lub przepustkę 0.
Dodawanie danych do kolejki
local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
Czytanie i usuwanie danych
Aby przeczytać jeden lub więcej pozycji z listy na raz, wezwij MemoryStoreQueue:ReadAsync(), który zwraca id przedstawiające pozycję czytania. Gdy skończysz z przetwarzaniem pozycji
Czytanie i usuwanie danych z koszyka danych z pętlem
local MemoryStoreService = game:GetService("MemoryStoreService")
local queue = MemoryStoreService:GetQueue("Queue1")
local addSuccess, addError = pcall(function()
queue:AddAsync("User_1234", 30, 1)
end)
if not addSuccess then
warn(addError)
end
-- Pętla przetwarzania w kolejności
while true do
local readSuccess, items, id = pcall(function()
return queue:ReadAsync(1, false, 30)
end)
if not readSuccess then
task.wait(1)
elseif #items > 0 then
print(items, id)
local removeSuccess, removeError = pcall(function()
queue:RemoveAsync(id)
end)
if not removeSuccess then
warn(removeError)
end
end
end