У меня 2 метода
void InitializeSlot()
{
if (hasItem)
{
ItemDatabase database = GameObject.Find("Inventory").GetComponent<ItemDatabase>();
Item item = database.FetchItemById(itemId);
Image image = transform.GetChild(0).gameObject.GetComponent<Image>();
image.sprite = item.Sprite;
}
}
И
void InitializeItem()
{
ItemDatabase database = GameObject.Find("Inventory").GetComponent<ItemDatabase>();
Item item = database.FetchItemById(itemId);
itemId = item.Id;
}
Ошибка:
NullReferenceException: Object reference not set to an instance of an object
Во втором методе на itemId = item.Id;
Это действительно странно. Почему-то я не могу получить доступ к компоненту ItemDatabase
одновременно из разных классов.
Впервые я получил ошибку в строке image.sprite = item.Sprite;
.
Перезапустил Unity, теперь это строка itemId = item.Id;
.
Оба метода вызываются по адресу void Start()
, но не могут работать вместе. Почему?
FetchItemById
public Item FetchItemById(int id)
{
for (int i = 0; i < database.Count; i++)
{
if (database[i].Id == id)
{
return database[i];
}
}
return null;
}