Dokonaj zmian w tablicach zmiennych

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

Treść matrycy często będzie musiała zostać zmieniona, jak w przypadku potrzeby usunięcia przedmiotu z wyposażeniegracza.Luau ma wbudowane funkcje do użycia z tablicami, aby ułatwić to zadanie.

Ten artykuł przedstawi gotowe funkcje dla tablic takich jak dodaj i usuń, opisując sposób wyszukiwania wartości.

Aby zastosować te umiejętności, utworzysz skrypt, który pomoże zarządzać ekwipunkiem gracza w grze.

Dodaj wartości do tablicy przypadków

Aby dodać nową wartość do matrycy, użyj table.insert(array, valueToInsert).Drugi parametr może być dowolną wartością, taką jak ciąg, liczba lub cały obiekt, tak jak Player lub IntValue.

Aby praktykować, utworzysz skrypt, który przechowuje przedmioty gracza w tabeli, a następnie dodasz do niego.Ponieważ ten przykład jest tylko skryptem, można go używać z dowolnym plikiem lub projektem.Testowanie kodu zostanie wykonane za pomocą okna wyjściowego.

  1. Stwórz pustą matrycę o nazwie playerItems.


    playerItems = {}
  2. Dodaj przedmioty z ekwipunku do matrycy, wpisując table.insert().W nawiasie, wpisz playerItems , tabelę do dodania, po której następuje ciąg dla każdego elementu.Wpisz co najmniej trzy wartości.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping Bag")
    print(playerItems)
  3. Wykonaj projekt. W wyniku rozszerz trzy punkty ... w celu zobaczenia wydrukowanej tabeli.

Usuń wartości z tablicy Wartości

Aby usunąć wartość, na przykład, jeśli gracz użył przedmiotu lub ktoś na liście aktywnych graczy opuścił doświadczenie, użyj table.remove().W zależności od dostarczonych parametrów funkcja może usunąć ostatnią wartość tabeli lub na określonym indeksie.

Usuń ostatnią wartość

Czasami skrypt musi usunąć określony element.Na instancja, usunięcie pierwszego przedmiotu w wyposażeniegracza lub wybranie pierwszego gracza na liście.Aby usunąć ostatnią wartość w matrycy, użyj table.remove(arrayName).W tym przypadku użycia jedynym potrzebnym parametrem jest sama tabela.

  1. Użyj array przedmiotów z poprzedniego przykładu. Następnie, aby usunąć ostatnią wartość z tabeli, w tym przypadku "Sleeping Bag", wpisz table.remove(playerItems)


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems)
    print(playerItems)
  2. Wykonaj projekt. W oknie wyjścia ostatnia wartość, "Sleeping Bag", nie powinna się drukować.

Usuń przez indeks

Aby usunąć wartość w określonym punkcie w arkuszu, wprowadź drugi parametr indeks do usuwać, wyjmować, tak jak table.remove(arrayName, 1).

  1. Używając tej samej tabeli, wpisz table.remove(). W parametrach wprowadź nazwę tabeli i 1, wartość do usuwać, wyjmować.


    playerItems = {}
    table.insert(playerItems, "Potion")
    table.insert(playerItems, "Bread")
    table.insert(playerItems, "Sleeping bag")
    table.remove(playerItems, 1)
  2. Wykonaj projekt. Sprawdź, czy pierwsza wartość, "Potion", została usunięta.

Szukaj wartości w tablicy

Aby znaleźć konkretne wartości w tablicach, takie jak nazwa zwycięskiego gracza, użyj funkcji table.find().Alternatywnie możesz kodować własną funkcję wyszukiwania za pomocą pętli for i oświadczeń if.

Znajdź i zwróć pojedynczą wartość

Aby znaleźć wartość w tablicy, stwórz funkcję o nazwie findValue(), która przechodzi przez tablicę i zatrzymuje się za pierwszym razem, gdy znajduje dopasowaną wartość.

Gdy znajdzie wartość, funkcja użyje kluczowa return znak, aby zwrócić indeks wartości. Z indeksem możesz go usunąć z matrycy.

  1. Kopiuj array o nazwie playerItems poniżej.


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Zapisz nową funkcję o nazwie findValue() z dwoma parametrami:

    • whichArray - lista do przeszukiwania.

    • itemName - konkretna struna do sprawdzenia.


      local function findValue(whichArray, itemName)
      end
  3. W findValue() , użyj pętli for, aby sprawdzić, czy którykolwiek wartość w array pasuje do itemName .Jeśli wartość jest zgodna, użyj słowa kluczowego return, aby zwrócić wartość znalezioną w currentIndex.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    return currentIndex
    end
    end
    end
  4. Przetestuj funkcję wyszukiwania, tworząc zmienną o nazwie valueFound i wywołując findValue().Przekaż w array do wyszukiwaći jaką wartość powinien wyszukać. Wykonaj kod , aby potwierdzić, że oczekiwany wynik to indeks 2.


    local function findValue(whichArray, itemName)
    for currentIndex = 1, #whichArray do
    if whichArray[currentIndex] == itemName then
    --Wysyła wartość obecnego indeksu wsteczpowrotem
    return currentIndex
    end
    end
    end
    local valueFound = findValue(playerItems, "Bread")
    print("The value is at index " .. valueFound)

Usuń wartość

Jeśli wartość została znaleziona za pomocą funkcji find, można ją usunąć. Sprawdź, czy wartość została znaleziona za pomocą oświadczenia if.

  1. Sprawdź, czy wartość jest w granicach valueFound ; jeśli tak, usuń wartość za pomocą table.remove() .


    if valueFound then
    table.remove(playerItems, valueFound)
    end
  2. Wydrukuj array za pomocą kodu poniżej.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  3. Przetestuj i sprawdź, czy pierwsza wartość "Bread" została usunięta z matrycy.Spróbuj usunąć inne wartości, zmieniając drugi parametr w findValue().

    Zauważ, że ponieważ ta funkcja została wezwana tylko raz, usunięto tylko pierwszą instancję "Bread".Następna sekcja pokaże, jak znaleźć i usunąć wszystkie instancje.

Znajdź i usuń całą określoną wartość

Choć poprzedni kod mógł usunąć tylko pierwszą instancję znalezionego wartości, ten kod snippet znajdzie i usunie wszystkie wystąpienia z listy.Na przykład, jeśli, powiedzmy, gracz chciał sprzedać cały swój chleb w sklepie w grze.

  1. Użyj tablicy o nazwie playerItems z co najmniej czterema wartościami i zestawem duplikatów .


    local playerItems = {
    "Potion",
    "Bread",
    "Bread",
    "Sleeping Bag"
    }
  2. Aby przejść przez tablicę, utwórz pętli for, która przechodzi wstecz przez playerItems, zaczynając od #playerItems, kończąc na 1 i zwiększając o -1


    for index = #playerItems, 1, -1 do
    end
  3. W pętli użyj oświadczenia if, aby sprawdzić, czy wartość wewnątrz playerItems[index] jest równa "Bread", a jeśli tak, usuń przedmiot.


    for index = #playerItems, 1, -1 do
    if playerItems[index] == "Bread" then
    table.remove(playerItems, index)
    end
    end
  4. Użyj kodu poniżej, aby dodać drugą pętlę, która drukuje tablicę.


    for index = 1, #playerItems do
    local itemString = playerItems[index]
    print("Index " .. index .. ": " .. itemString)
    end
  5. Wykonaj skrypt i sprawdź, czy wszystkie wartości o nazwie "Chleb" zostały usunięte.

Podsumowanie

Wartości mogą być usuwane lub dodawane do matrycy, ale uważaj na przesunięcie indeksów, które to robią.Użyj pętli, aby przeszukiwać tabelę, aby usunąć wszystkie instancje wartości lub tylko pierwszą znalezoną instancję.

Słowo kluczowe return może być użyte do zatrzymania pętli i wysłania informacji z powrotem tam, gdzie jest to potrzebne.

Zakończona wersja skryptu może być odwołana poniżej.

Następny projekt obejmuje wszystkie skrypty w tym samouczku. Pobierz tutaj .

Zauważ, że wszystkie skrypty są w ServerScriptService i wyłączone .Aby użyć skryptu, w jego właściwościach, odznacz pole Nieaktywne i uruchom Studio.