«Selectable.allSelectables» устарел: «заменен на allSelectablesArray для повышения производительности при отключении элемента» - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть эта функция:

private void SortSelectables()
    {
        List<Selectable> originalSelectables = Selectable.allSelectables;
        int totalSelectables = originalSelectables.Count;
        m_orderedSelectables = new List<Selectable>(totalSelectables);
        for (int index = 0; index < totalSelectables; ++index)
        {
            Selectable selectable = originalSelectables[index];
            m_orderedSelectables.Insert(FindSortedIndexForSelectable(index, selectable), selectable);
        }
    }

И я получаю предупреждение 'Selectable.allSelectables' is obsolete: 'Replaced with allSelectablesArray to have better performance when disabling a element'

Я посмотрел на документацию , и я знаю, что она ясно говорит Selectable.allSelectables устарел. Тем не менее, я попытался заменить его на Selectable.allSelectablesArray, и теперь предупреждение является ошибкой, а именно: Cannot implicitly convert type 'UnityEngine.UI.Selectable[]' to 'System.Collections.Generic.List<UnityEngine.UI.Selectable>'.

Я уверен, что что-то упущено в типе Selectable, который я не делаю В любом случае, я не совсем понимаю.

РЕДАКТИРОВАТЬ: изменение от List до Selectable[] originalSelectables делает меня неспособным использовать свойство Count в следующей строке.

1 Ответ

0 голосов
/ 03 апреля 2020

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

Заменили

List<Selectable> originalSelectables = Selectable.allSelectables;
int totalSelectables = originalSelectables.Count;

на

Selectable[] originalSelectables = Selectable.allSelectablesArray;
int totalSelectables = originalSelectables.Length;
...