#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. например, да.. зависит от того, что вы хотите для количества