배열의 콘텐츠는 플레이어의 인벤토리에서 항목을 제거해야 할 때와 같이 자주 변경해야 합니다.Luau에는 내장 함수 가 있어 테이블을 사용하여 이를 더 쉽게 만들 수 있습니다.
이 문서에서는 값을 검색하는 방법을 설명하면서 추가 및 제거와 같은 테이블에 미리 작성된 함수를 설명합니다.
이 기술을 적용하려면 게임에서 플레이어의 인벤토리를 관리하는 데 도움이 되는 스크립트를 만듭니다.

배열에 값 추가
배열에 새 값을 추가하려면 table.insert(array, valueToInsert)를 사용하십시오.두 번째 매개 변수는 문자열, 숫자 또는 전체 개체와 같은 값일 수 있습니다, 예를 들어 Player 또는 IntValue.
연습을 위해 플레이어 아이템을 테이블에 저장하는 스크립트를 만들고 추가합니다.이 예제는 단지 스크립트이므로 모든 파일이나 프로젝트와 함께 사용할 수 있습니다.코드 테스트는 출력 창을 사용하여 수행됩니다.
Create an empty array named playerItems 빈 배열을 만듭니다.
playerItems = {}table.insert()를 입력하여 배열에 인벤토리 항목을 추가합니다.괄호 안에서 playerItems , 추가할 테이블, 각 아이템대한 문자열을 입력합니다.적어도 세 가지 값을 삽입하십시오.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)프로젝트 실행. 출력에서 세 점 ... 을 확장하여 인쇄된 테이블을 봅니다.
배열에서 값 제거
플레이어가 아이템을 사용하거나 활성 플레이어 목록의 사람이 경험을 떠나면 같이 table.remove() 을 사용하여 값을 제거합니다.제공된 매개 변수에 따라 함수는 테이블의 마지막 값이나 특정 인덱스에서 제거할 수 있습니다.
마지막 값 제거
때때로 스크립트는 특정 아이템제거해야 합니다.예를 인스턴스, 플레이어의 인벤토리에서 첫 번째 항목을 제거하거나 목록에서 첫 번째 플레이어를 선택합니다.배열에서 마지막 값을 제거하려면 table.remove(arrayName)를 사용하십시오.이 사용 사례에서 필요한 유일한 매개 변수는 테이블 자체입니다.
이전 예제의 항목 배열을 사용합니다. 그런 다음 마지막 값을 테이블에서 제거하려면, 이 경우 "Sleeping Bag" , table.remove(playerItems) 를 입력합니다
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems)print(playerItems)프로젝트를 실행합니다. 출력 창에서 마지막 값, "Sleeping Bag" ,는 인쇄되지 않아야 합니다.
인덱스로 제거
배열의 특정 지점에서 값을 제거하려면 두 번째 매개변수에서 제거할 인덱스(예: table.remove(arrayName, 1))를 입력하십시오.
동일한 테이블을 사용하여 table.remove() 를 입력합니다. 매개 변수에서 테이블 이름과 1 를 제거.
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping bag")table.remove(playerItems, 1)프로젝트를 실행합니다. 첫 번째 값 "포션"이 제거되었는지 확인합니다.
배열에서 값 검색
승리하는 플레이어의 이름과 같은 배열의 특정 값을 찾으려면 table.find() 함수를 사용하십시오.또는, for 루프와 if 문을 사용하여 자체 검색 함수를 코딩할 수 있습니다.
단일 값 찾아 반환
배열에서 값을 찾으려면 배열을 통과하고 일치하는 값을 처음 찾는 함수 findValue())를 만들어 이름을 지정하십시오.
값을 찾으면 함수는 return 키워드를 사용하여 해당 값의 인덱스를 반환합니다. 인덱스가 있으면 배열에서 제거할 수 있습니다.
아래에 명명된 배열 playerItems을 복사합니다.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}두 개의 매개 변수로 새로운 함수 findValue()를 코드하십시오:
whichArray - 검색할 배열.
itemName - 확인할 특정 문자열.
local function findValue(whichArray, itemName)end
In findValue() , for 루프를 사용하여 배열에서 값이 itemName 일치하는지 확인합니다.값이 일치하면 return 키워드를 사용하여 currentIndex에서 찾은 값을 반환합니다.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName thenreturn currentIndexendendend검색 기능을 테스트하기 위해 valueFound라는 변수를 만들고 findValue()를 호출하십시오.검색할 배열과 검색할 값을 전달합니다. 실행 코드를 실행하여 예상 출력이 인덱스 2인지 확인합니다.
local function findValue(whichArray, itemName)for currentIndex = 1, #whichArray doif whichArray[currentIndex] == itemName then--현재Index의 값을 뒤로보냅니다return currentIndexendendendlocal valueFound = findValue(playerItems, "Bread")print("The value is at index " .. valueFound)
값 제거
찾기 함수를 사용하여 값을 찾은 경우 해당 값을 제거할 수 있습니다. if 문으로 값을 찾았는지 확인하십시오.
값이 valueFound 내에 있는지 확인하고, 있으면 table.remove()를 사용하여 값을 제거합니다.
if valueFound thentable.remove(playerItems, valueFound)end아래 코드를 사용하여 배열을 출력합니다.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)end플레이테스트를 수행하고 배열에서 처음 "Bread" 값이 제거되었는지 확인하십시오.다른 값을 제거하여 두 번째 매개변수를 변경하여 findValue()에서 제거해 보세요.
이 함수가 한 번 호출되었기 때문에, 처음 인스턴스인 "Bread"만 제거되었습니다.다음 섹션에서는 모든 인스턴스를 찾아서 제거하는 방법을 설명합니다.
특정 값의 모든 찾고 제거
이전 코드는 찾을 수 있는 값의 첫 인스턴스만 제거할 수 있었지만, 이 코드 조각은 배열에서 모든 발생을 찾아서 제거합니다.예를 들어, 플레이어가 게임 내 상점에서 모든 빵을 판매하길 원한다고 가정해 보겠습니다.
최소 4개의 값과 반복 집합인 duplicates 이 있는 배열 playerItems 을 사용하십시오.
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}배열을 통과하려면, 뒤로 이동하는 반복 루프를 만들어 시작하여 , 1에서 끝나고 -1로 증가합니다.
for index = #playerItems, 1, -1 doend루프에서는 if 문을 사용하여 playerItems[index] 내의 값이 "Bread"와 같은지 확인하고, 그렇다면 아이템제거합니다.
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endend아래 코드를 사용하여 배열을 인쇄하는 루프의 두 번째를 추가합니다.
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)end스크립트를 실행하고 "빵"이라는 모든 값이 제거되었는지 확인하십시오.
요약
값은 배열에서 제거하거나 추가할 수 있지만, 인덱스가 이동하는 것을 주의하십시오.루프를 사용하여 테이블을 반복하여 값의 모든 인스턴스를 제거하거나 처음 찾은 인스턴스만 제거합니다.
키워드 return 는 루프를 중지하고 필요한 경우 정보를 다시 보내기 위해 사용할 수 있습니다.
스크립트의 완성된 버전은 아래에서 참조할 수 있습니다.
다음 프로젝트에는 이 자습서의 모든 스크립트가 포함되어 있습니다. 다운로드 여기 .
모든 스크립트가 ServerScriptService 에 있고 비활성화 되어 있음을 알아두십시오.스크립트를 사용하려면 속성에서 비활성 필드를 선택 취소하고 Studio를 실행하십시오.