Я знаю, что он возвращает данные компоненты, найденные в иерархии родителя, но в каком порядке? Мне нужно знать, потому что я хочу использовать это для инициализации своих сценариев, и сначала мне нужно сначала инициализировать родителей, а потом детей (потому что нижние компоненты иерархии используют рассчитанные значения их прямых родителей).Unity - GetComponentsInChildren <T>() return order
1
A
ответ
3
Документация Unity для GetComponentsInChildren не гарантирует определенный порядок возврата - таким образом, даже если вы найдете детерминированный порядок в текущей версии, он может сломаться, когда Unity отправит новую сборку, которая изменит этот детерминированный порядок. Таким образом, вам нужно будет обеспечить гарантии родительской инициализации в вашем собственном коде. Один из способов сделать это были бы перебрать преобразование:
void InitializeHierarchy(Transform root)
{
var initializable = root.GetComponent<Initializable>();
if(initializable != null) initializable.Initialize();
foreach(Transform t in root)
{
if(t == root) continue; //make sure you don't initialize the existing transform
InitializeHierarchy(t); //initialize this Transform's children recursively
}
}
Примечания: это будет инициализировать прямые родитель, прежде чем прямые дети - однако он не будет инициализировать тетя/дяди перед племянницей/племянников.
Смежные вопросы
- 1. CAS: Расшифровка TGT
- 2. Force Renew TGT
- 3. Kerberos TGT Behavior
- 4. Как использовать выражение генератора CMake $ <TARGET_FILE: tgt>?
- 5. Qt Tab Order with Return Key
- 6. Slick 3.0 bulk insert return object's order
- 7. lstat return <0
- 8. Невозможно установить свойство «TGT» нулевой
- 9. Оператор перегрузки << from function return
- 10. GROUP BY с ORDER BY <- ORDER BY TIMESTAMP игнорируется
- 11. Список <Product> .Join (Список <Order>, ...) идентичен списку <Order> .Join (Список <Product>, ...)?
- 12. Unity Button Изменение текста
- 13. magento xml order return - не удалось проанализировать представленные XML
- 14. Unity как можно AddComponent <T>()?
- 15. Условное блокирование IEnumerable <t> return return result
- 16. Регистрация ISecureDataFormat <AuthenticationTicket> с Unity
- 17. Unity (C#) -> Kotlin <- Coroutines
- 18. C#: преобразование вращения MAYA (yUp, righthand, xyz order) для вращения UNITY (yUp, left left, zxy order)
- 19. Unity Resolve <Interface1 <Interface2>> вопросы
- 20. Unity Simple 2D Collider Sensor Script Order of Events Issue
- 21. ORDER BY <int или varchar>
- 22. Правильно: «Employee.where (возраст: <" 60 "). Order (: имя)"?
- 23. HTML <a> tag event order
- 24. SQL return ORDER BY result в виде массива
- 25. Какие приложения используют поведение getopt «return in order»?
- 26. return item click order/position внутри своего контейнера div
- 27. Как GSSManager.createCredential получает ключ Kerberos и TGT?
- 28. Может ли CAS (Jasig) перезагрузить сервер TGT?
- 29. Получение TGT с использованием принципала сервиса
- 30. Как защитить файл cookie CAS-сервера TGT?
Кроме того, GetComponentsInChildren получит только прямые дочерние объекты текущего объекта. Решение Lincoln доставит вам все компоненты вплоть до вашего гнездования. – Allen
@Allen от Unity 5.5.0f3 это не так - GetComponentsInChildren возвращает компоненты рекурсивно вниз по иерархии. –
Я стою исправлен, если OP не использует более старую версию, чем 5.5. Спасибо! – Allen