Отображение элементов при помощи List

Рейтинг: 0Ответов: 1Опубликовано: 12.08.2023

Почему в данном случае список отображаемых элементов HealthIcon[i] будет равен Health, а не величине листа. Помогите, пожалуйста, разобраться. maxHealth имеет постоянную велечину 8.

public GameObject HealthIconPrefab;
public List<GameObject> HealthIcon = new List<GameObject>();
public void Setup(int maxHealth)
{
    for (int i = 0; i < maxHealth; i++)
    {
        GameObject newIcon = Instantiate(HealthIconPrefab, transform);
        HealthIcon.Add(newIcon);
    }
}

public void DisplayHealth(int Health)
{
    for (int i = 0; i < HealthIcon.Count; i++)
    {
        if (i < Health)
        {
            HealthIcon[i].SetActive(true);
        }
        else
        {
            HealthIcon[i].SetActive(false);
        }
    }
}

Ответы

▲ 1Принят

Собака порылась в этой тонкости: "список отображаемых элементов HealthIcon[i] будет равен Health, а не величине листа". Из продемострированного кода не видно, как будет отображаться список HealthIcon, а видно только, что его первые элементы в заданном количестве активируются в DisplayHealth. Не знаю, как устроено Unity3D, но оно может отображать только активированные элементы. По идее, оно должно отображать все элементы из списка, но в разном виде в зависимости от состояния. Возможно, что состояние активации это не тот признак, по которому элементы отображаются различным способом.