Почему эту ошибку выводит?
Вот код:
Inventory
for(int i = 0; i < inventoryItems.Length;i++)
{
if(inventoryItems[i] != null) continue;
inventoryItems[i] = it;
print("item add - " + inventoryItems[i]);
(new InventoryWindow()).Redraw();
}
InventoryWindow
InventoryWindow
public class InventoryWindow : MonoBehaviour
{
[SerializeField] public Inventory targetInventory;
[SerializeField] public Transform itemsPanel;
void Start()
{
Redraw();
}
void Update()
{
if(Input.GetKeyDown(KeyCode.F))
Redraw();
}
public void Redraw()
{
bool ChildNull = true;
bool RemoveSprites = false;
bool finish = false;
while(finish != true)
{
print("z - " + itemsPanel.transform.childCount);
if(itemsPanel.transform.childCount == 0) {ChildNull = true;}
else if(itemsPanel.transform.childCount > 0) {ChildNull = false;}
print("bool - " + ChildNull);
if(ChildNull == true)//если спрайтов нету
{
for(var i = 0; i < targetInventory.inventoryItems.Length; i++)
{
if(targetInventory.inventoryItems[i] != null)
{
var item = targetInventory.inventoryItems[i];
GameObject icon = new GameObject("Icon");
icon.AddComponent<Image>().sprite = item.Icon;
icon.transform.SetParent(itemsPanel);
icon.transform.localScale = Vector3.one;
}
}
}else//если есть
{
if(RemoveSprites == false)
{
for(int i = 0; i < itemsPanel.transform.childCount; i++)
{
Destroy(itemsPanel.transform.GetChild(i).gameObject);
if(i == (itemsPanel.transform.childCount - 1)) RemoveSprites = true;
}
}else if(RemoveSprites == true)
{
for(var i = 0; i < targetInventory.inventoryItems.Length; i++)
{
if(targetInventory.inventoryItems[i] != null)
{
var item = targetInventory.inventoryItems[i];
GameObject icon = new GameObject("Icon");
icon.AddComponent<Image>().sprite = item.Icon;
icon.transform.SetParent(itemsPanel);
icon.transform.localScale = Vector3.one;
}
if(i == (targetInventory.inventoryItems.Length - 1)) finish = true;
}
}
}
}
}
}
Ошибка на эту строчку :
print("z - " + itemsPanel.transform.childCount);
, но если убрать эту строчку, то на эту
if(itemsPanel.transform.childCount == 0) {ChildNull = true;}
Ошибку показывает если Redraw вызвать из Inventory, а если вызвать из InventoryWindow, то этой ошибки нету