プレイヤーのインベントリからアイテムを削除する必要があるときのように、アレイの持ち物リスト容を変更する必要があることが多いです。Luau には、 内蔵機能 があり、テーブルを使用してこれを簡素化するために使用できます。
この記事では、追加や削除などのテーブルのプリビルド機能を概説し、値を検索する方法を説明します。
これらのスキルを適用するには、ゲームでプレイヤーのインベントリを管理するのを助けるスクリプトを作成します。

アレイに値を追加する
配列に新しい値を追加するには、table.insert(array, valueToInsert) を使用します。2番目のパラメータは、文字列、数、または全体のオブジェクトのような値である Player または IntValue のようなものでもよいです。
練習するには、プレイヤーアイテムをテーブルに保存するスクリプトを作成し、それに追加します。この例はスクリプトであるため、任意のファイルまたはプロジェクトと一緒に使用できます。コードのテストは出力ウィンドウを使用して行われます。
空の配列 playerItems という名前の空の配列を作成します。
playerItems = {}インベントリアイテムを配列に追加するには、table.insert() をタイプします。括弧内で、playerItems 、追加するテーブルをタイプし、それに続く各アイテムの文字列。少なくとも 3 つの値を挿入します。
playerItems = {}table.insert(playerItems, "Potion")table.insert(playerItems, "Bread")table.insert(playerItems, "Sleeping Bag")print(playerItems)プロジェクトを実行します。出力で、3つのドット ... を拡張して、印刷されたテーブルを表示します。
アレイから値を削除する
値を削除するには、プレイヤーがアイテムを使用したり、アクティブなプレイヤーのリストにいる人がエクスペリエンスを終了したりするように、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) などの削除インデックスを第 2 パラメータに入力してください。
同じテーブルを使用し、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 キーワードを使用して、その値のインデックスを返します。インデックスを使用すると、配列から削除できます。
以下の名前の array をコピーします playerItems。
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}2つのパラメータで新しい機能 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--現在のインデックスの値を戻るす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() の 2番目のパラメータを変更して、他の値を削除してみてください。
この関数は 1回呼ばれたので、"Bread" の最初のインスタンスだけが削除されました。次のセクションでは、すべてのインスタンスを見つけて削除する方法を説明します。
特定の値をすべて見つけて削除
前のコードでは、見つかった値の最初のインスタンスのみを削除できましたが、このコードスニップは、配列からすべての発生を見つけて削除します。たとえば、プレイヤーがゲーム内のスト保管ですべてのパンを売りたいと望んだ場合。
使用する配列の名前は playerItems 、少なくとも 4つの値と 複製セット が含まれています。
local playerItems = {"Potion","Bread","Bread","Sleeping Bag"}配列を通過するには、 戻る を経由して playerItems を回り、#playerItems から始まり、1で終わり、-1で増加する forループを作成します。
for index = #playerItems, 1, -1 doendループでは、if 文を使用して、playerItems[index] 内の値が "Bread" と同じかどうかをチェックし、そうであれば、アイテムを削除します。
for index = #playerItems, 1, -1 doif playerItems[index] == "Bread" thentable.remove(playerItems, index)endend以下のコードを使用して、配列を印刷するループを 2 秒追加します。
for index = 1, #playerItems dolocal itemString = playerItems[index]print("Index " .. index .. ": " .. itemString)endスクリプトを実行し、「パン」という名前のすべての値が削除されているかどうかを確認します。
概要
値はアレイに削除または追加できますが、インデックスが移動することに注意してください。ループを使用して、テーブルを順回しして値のすべてのインスタンスを削除するか、最初に見つかったインスタンスのみを削除します。
キーワード return はループを停止し、必要なところに情報を送り返すのに使用できます。
スクリプトの完了したバージョンは以下で参照できます。
次のプロジェクトには、このチュートリアルのすべてのスクリプトが含まれています。ダウンロード ここ 。
すべてのスクリプトが ServerScriptService と 無効 にあることに注意してください。スクリプトを使用するには、プロパティで [無効] フィールドをオフにして、Studio を実行します。