如何在 C# 中删除元素时避免收缩列表?

问题描述 投票:0回答:0

所以我的 Unity 项目中有一个列表,当我在播放模式下从该列表中删除一个元素时,例如从第一个插槽中,列表正在缩小。我想让该列表保持与以前相同的大小,但我不知道该怎么做。有没有办法,例如,用空对象替换删除的对象?

此外,这是我现在正在谈论的那部分代码:

public class Inventory : MonoBehaviour
{
    public List<GameObject> items;

    public GameObject selectedGameObject;

    public int SelectedItem = 0;
    public int maxSlots;
    public int maxStack;

    public ItemSlot[] itemSlot;

    public void AddItem(string itemName, int quantity, Sprite itemSprite, string ItemDesc, GameObject itemObj)
    {
        for (int i = 0; i < itemSlot.Length; i++)
        {
            if (itemSlot[i].IsFull == false)
            {
                itemSlot[i].AddItem(itemName, quantity, itemSprite, ItemDesc);
                items.Add(itemObj);
                selectedGameObject = itemObj;
                UpdateSelectedItem();
                return;
            }
        }

        SelectedItem = items.IndexOf(itemObj.gameObject);
    }
    
    public void RemoveItem(GameObject itemObj)
    {
        for (int i = 0; i < itemSlot.Length; i++)
        {
            itemSlot[i].RemoveObj();
            items.Remove(itemObj);
        }
    }
}

我想创建一个系统,允许我在调用 RemoveItem() 时从列表中删除对象而不缩小它。

每当我尝试从那里删除一个元素时,对象列表就会缩小。我希望该列表保持相同的大小,因此即使对象被删除,列表大小也保持不变。

list unity3d
© www.soinside.com 2019 - 2024. All rights reserved.