Wprowadzenie do słowników

*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.

Słowniki to tabele, które łączą nazwy lub klucze z wartością zamiast indeksu.

Przykład:

Składnia słownika Luau
local pet = {
Name = "Bobbie",
Type = "Pies",
}

Używaj słowników, gdy musisz oznaczyć wartości, a nie tylko je wymieniać w kolejności, jak robi to tablica. Ćwicz używanie słowników w tym samouczku, manipulując wartościami związanymi z graczem.

Składnia słownika

Podobnie jak tablice, słowniki są przypisywane do zmiennej za pomocą klamrowych nawiasów {}. Pary klucz-wartość są przechowywane w osobnych liniach, po których następuje przecinek. Klucze i wartości mogą być dowolnym typem danych, w tym ciągami, liczbami i nazwami zmiennych.

local playerNames = {
player1 = "Zap",
player2 = "Kel",
}
print(playerNames["player1"])

Aby odwołać się do części lub innych obiektów instancjonowanych jako kluczy, użyj nawiasów kwadratowych.

local greenPart = workspace.GreenPart
local redPart = workspace.RedPart
local partList = {
[greenPart] = true,
[redPart] = false,
}
print(partList[redPart])

Utwórz słownik

Jednym z codziennych zastosowań słowników jest organizowanie informacji o graczach lub postaciach. Te kroki pokazują, jak teoretyczne informacje o postaci wroga mogą być przechowywane i uzyskiwane.

  1. W nowym skrypcie utwórz słownik o nazwie enemy.

    local enemy = {
    }
  2. Pierwszy klucz w słowniku będzie śledził imię wroga za pomocą zmiennej o nazwie Name.

    local enemy = {
    Name
    }
  3. Przypisz imię wroga do klucza, po którym następuje przecinek.

    local enemy = {
    Name = "Spike",
    }
  4. Dodaj drugą parę klucz-wartość dla ilości zdrowia, jaką powinien mieć wróg. Pamiętaj, że klucze zawsze powinny używać tego samego typu danych, ale wartości nie muszą.

    local enemy = {
    Name = "Spike",
    Health = 1000,
    }

Użyj wartości słownika

Istnieją dwa sposoby uzyskiwania dostępu do wartości słownika:

  • tableName["keyName"] (ważne, aby zauważyć cudzysłowy)
  • tableName.keyName
local enemy = {
Name = "Spike",
Health = 1000,
}
print("Złoczyńca " .. enemy["Name"] .. " zbliża się!")
print("Złoczyńca " .. enemy.Name .. " zbliża się!")

Który styl użyć, zazwyczaj zależy od celu tabeli. Dla tabel przechowujących zbiór wartości, takich jak lista graczy na serwerze, programiści zazwyczaj używają tableName["keyName"]. Dla słownika używanego do opisywania obiektu, programiści częściej używają tableName.keyName.

Zmień wartość słownika

Zmiana wartości klucza jest taka sama jak w przypadku każdej innej zmiennej; użyj operatora równości =.

  1. Pod tabelą enemy, ustaw imię wroga na coś innego.

    local enemy = {
    Name = "Spike",
    Health = 1000,
    }
    enemy.Name = "Rana"
    print("Imię wroga to " .. enemy.Name)
  2. Przetestuj grę i sprawdź okno wyjściowe.

Istniejące zmienne jako klucze

Słowniki mogą współdziałać z istniejącymi zmiennymi zadeklarowanymi w innych częściach skryptu. Poniższy przykład kodu używa zmiennej do dodania imienia gracza jako klucza, gdy dołącza do gry, a następnie ustawia wartość jego punktów na 0.

  1. W ServerScriptService utwórz nowy skrypt o nazwie PlayerPoints. W skrypcie uzyskaj dostęp do usługi Graczy i utwórz pusty słownik o nazwie playerPoints.

    local Players = game:GetService("Players")
    local playerPoints = {
    }
  2. Napisz lokalną funkcję do ustawiania punktów gracza z parametrem dla nowej zmiennej gracza. Połącz funkcję z wydarzeniem Players.PlayerAdded.

    local playerPoints = {
    }
    local function setPoints(newPlayer)
    end
    Players.PlayerAdded:Connect(setPoints)
  3. W funkcji dodaj zmienną, aby uzyskać imię gracza, właściwość w każdym obiekcie Player, oraz instrukcję print do testowania.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("cześć " .. name)
    end
  4. Wstaw name do słownika playerPoints jako klucz i ustaw wartość, punkty gracza, na 0.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("cześć " .. name)
    playerPoints[name] = 0
    end
  5. Użyj name, aby wydrukować imię gracza, a playerPoints[name], aby wydrukować wartość klucza odpowiadającego zmiennej.

    local function setPoints(newPlayer)
    local name = newPlayer.Name
    print("cześć " .. name)
    playerPoints[name] = 0
    print(name .. " ma " .. playerPoints[name] .. " punktów.")
    end
  6. Uruchom projekt i obserwuj wynik.

Zakończony skrypt
local Players = game:GetService("Players")
local playerPoints = {
}
local function setPoints(newPlayer)
local name = newPlayer.Name
print("cześć " .. name)
playerPoints[name] = 0
print(name .. " ma " .. playerPoints[name] .. " punktów.")
end
Players.PlayerAdded:Connect(setPoints)

Opcjonalne wyzwania

Poniżej znajdują się wyzwania, które można zastosować do używania słowników w różnych sposób. Sprawdź, czy możesz rozbudować kod dla tych zadań.

  • Stwórz pułapkę, która zadaje obrażenia w czasie, gdy gracz ją dotknie. Gdy gracz dotknie pułapki, zadaj mu obrażenia, poczekaj, a następnie pozwól mu ponownie otrzymać obrażenia.
  • Stwórz funkcję, która sprawdza, który z dwóch graczy ma najwięcej punktów, uzyskując dostęp do słownika.
  • Stwórz szyfr, system zamiany jednego ciągu na inny, aby stworzyć "tajny" kod. Na przykład, litera "A" może być zamieniana na "G", lub słowo "jabłko" może być zamieniane na "pomarańczę".

Słowniki i pairs()

pairs() to funkcja, która jest często używana do iteracji przez słowniki. Przykład można zobaczyć poniżej.

local myDictionary = {
["Niebieski Gracz"] = "Ana",
["Złoty Gracz"] = "Binh",
["Czerwony Gracz"] = "Cate",
}
for key, value in pairs(myDictionary) do
print(key .. " to " .. value)
end

pairs() można używać do pracy z kluczem, wartością lub oboma elementami słownika. W poniższej pętli for, pierwsza zmienna to klucz. Druga zmienna to wartość. Słownik, z którym chcesz pracować, jest przekazywany do pairs().

local inventory = {
["Złote Cegły"] = 43,
Marchewki = 3,
Latarki = 2,
}
print("Masz:")
for itemName, itemValue in pairs(inventory) do
print(itemValue, itemName)
end

Po wykonaniu kodu zostanie wydrukowane:

Masz:
43 Złote Cegły
3 Marchewki
2 Latarki

Podsumowanie

Słowniki to tabele, które używają par klucz-wartość zamiast wartości indeksowanych. Słowniki i tablice zaczynają się podobnie, przypisując klamrowe nawiasy do zmiennej. Oddzielaj wpisy przecinkami.

Wszystkie klucze w słowniku powinny używać tego samego typu danych, ale wartości mogą mieszać typy danych bez problemu.

Sposób, w jaki uzyskuje się dostęp do słownika, może przekazywać jego cel. Słownik właściwości wroga będzie prawdopodobnie uzyskiwany za pomocą operatora kropki, podczas gdy lista imion będzie prawdopodobnie używać tableName[keyName].

Podczas używania nawiasów kwadratowych, bądź ostrożny; nazwy kluczy utworzone w tabeli muszą być traktowane jako ciągi: tableName["keyName"]. Jednak przy odwoływaniu się do obiektów, takich jak części, cudzysłowy nie są potrzebne: tableName[keyName].

Wiele skryptów musi przechodzić przez słowniki lub tablice, ale nie zawsze możesz znać początek i koniec tych struktur danych. Na przykład, słownik graczy może się zmieniać, lub gracze mogą mieć tablicę ekwipunku o zmiennej wielkości.

W takich sytuacjach możesz użyć pairs() i ipairs() w pętli for, aby przejść przez każdy element bez znanych punktów początkowych i końcowych. Możesz także użyć ogólnej iteracji przez słowo kluczowe in, aby przejść przez elementy bez potrzeby używania pairs() lub ipairs().

©2026 Roblox Corporation. Nazwa Roblox, logo Roblox oraz hasło „Powering Imagination” należą do naszych zarejestrowanych i niezarejestrowanych znaków towarowych na terenie Stanów Zjednoczonych oraz w innych krajach.