нужна помощь по Unity: параметр не существует в текущем контексте конструкции

#visual-studio #unity3d #parameters #instance #construct

#visual-studio #unity3d #параметры #экземпляр #построить

Вопрос:

Я собирался попрактиковаться в создании инвентаря, но, похоже, он не будет считывать параметр из другого скрипта. Я работаю над своим обучением на основе моего руководства, вот как выглядит код:

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

я ничего не ожидал, потому что я не закончил руководство. кто-нибудь знает почему?

Ответ №1:

ну, в

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

вы вызываете

 new ItemStack(FoodMaterial, amount)
  

с параметрами, FoodMaterial, amount но ни ваш ItemCatalogue класс, ни метод GetItem не содержат никаких переменных / полей / свойств с этими именами.

Вам скорее нужно передать туда некоторые значения, например

 // 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));
  

Комментарии:

1. Поэтому вместо ‘ InventoryCatalogue. Экземпляр. AddMaterialToCatalogue(new ItemStack(FoodMaterial, 1)); ‘ это должен быть каталог инвентаризации. Экземпляр. AddMaterialToCatalogue(new ItemStack(item, 1)); ‘ Не так ли?

2. например, да.. зависит от того, что вы хотите для количества