Search code examples
visual-studiounity-game-engineparametersinstanceconstruct

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


I was going to practice how to create Inventory, but it seems it won't read the parameter from the other script. I'm working on my training based on my tutorial, here's how the code goes:

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 () 
    {
    }
}

And here's the other script:

[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;
    }
}

i didn't expect anything because i haven't finished the tutorial. anybody know why?


Solution

  • well in

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

    you call

    new ItemStack(FoodMaterial, amount)
    

    with the parameters FoodMaterial, amount but your ItemCatalogue class nor the method GetItem contains any variables/fields/properties with those names.

    You rather have to pass some values in there like e.g.

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

    so

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