需要有关 Unity 的帮助:当前 Construct Context 中不存在参数

need help on Unity: parameter doesn't exist in current Construct Context

本来想练习如何创建Inventory的,但是好像不会从其他脚本中读取参数。我正在根据我的教程进行培训,代码如下:

public class ItemCatalogue : MonoBehaviour 
{
    public Items[] AvailableItems;
    public Text DisplayArray;

    public void GetItem() 
    {
       Items item = AvailableItems[Random.Range(0, AvailableItems.Length)];
        InventoryCatalogue.Instance.AddMaterialToCatalogue(new ItemStack(FoodMaterial, amount));//weird, the parameter doesn't exist
        DisplayArray.text = item.name;
    }

    // Use this for initialization
    void Start () 
    {

    }

    // Update is called once per frame
    void Update () 
    {
    }
}

这是另一个脚本:

[System.Serializable]
public class ItemStack
{
    public Items FoodMaterial;
    public int amount;

    public ItemStack(Items FoodMaterial, int amount) //here's the parameter
    {
        this.FoodMaterial = FoodMaterial;
        this.amount = amount;
    }
}

我没有期待任何事情,因为我还没有完成教程。有人知道为什么吗?

很好

InventoryCatalogue.Instance.AddMaterialToCatalogue(new ItemStack(FoodMaterial, amount));

你打电话

new ItemStack(FoodMaterial, amount)

使用参数 FoodMaterial, amount,但您的 ItemCatalogue class 或方法 GetItem 包含任何具有这些名称的 variables/fields/properties。

您更愿意在其中传递一些值,例如

// I don't know what you want to pass in as amount
new ItemStack(item, 1)

所以

Items item = AvailableItems[Random.Range(0, AvailableItems.Length)];
InventoryCatalogue.Instance.AddMaterialToCatalogue(new ItemStack(item, 1));