1max1 писал(а):https://docs.unity3d.com/ScriptReference/Transform.Find.html
1max1 писал(а):Синтаксис:Используется csharpstatic class ex
{
public static Transform[] GetAllChilds(this Transform me)
{
List<Transform> result = new List<Transform>();
for (int i = 0; i < me.childCount; ++i)
{
result.Add(me.GetChild(i));
result.AddRange(me.GetChild(i).GetAllChilds());
}
return result.ToArray();
}
}Синтаксис:Используется csharpforeach (var child in transform.GetAllChilds())
{
if (child.name == "asd")...
}
~AvA~ писал(а):Можно попробовать сделать более специфическое расширениеСинтаксис:Используется csharpusing System.Linq;
using UnityEngine;
public static class
{
public static Transform[] GetInactiveChildrenWithName(this Transform transform, string childName)
{
return
transform
.GetComponentsInChildren<Transform>()
.Where(t => t.name == childName && !t.gameObject.activeSelf)
.ToArray();
}
}
Использование
foreach (var child in transform.GetInactiveChildrenWithName("name"))
{
//делаем всякие прикольные штуки
}
Не тестил )
Niker писал(а):~AvA~ писал(а):Можно попробовать сделать более специфическое расширениеСинтаксис:Используется csharpusing System.Linq;
using UnityEngine;
public static class
{
public static Transform[] GetInactiveChildrenWithName(this Transform transform, string childName)
{
return
transform
.GetComponentsInChildren<Transform>()
.Where(t => t.name == childName && !t.gameObject.activeSelf)
.ToArray();
}
}
Использование
foreach (var child in transform.GetInactiveChildrenWithName("name"))
{
//делаем всякие прикольные штуки
}
Не тестил )
Избегайте использования LINQ
Хотя LINQ может быть очень четким и удобным для чтения и записи, обычно требуется гораздо больше вычислительных ресурсов и особенно больший объем памяти, чем написание алгоритма вручную.
IDoNotExist писал(а):Niker писал(а):~AvA~ писал(а):Можно попробовать сделать более специфическое расширениеСинтаксис:Используется csharpusing System.Linq;
using UnityEngine;
public static class
{
public static Transform[] GetInactiveChildrenWithName(this Transform transform, string childName)
{
return
transform
.GetComponentsInChildren<Transform>()
.Where(t => t.name == childName && !t.gameObject.activeSelf)
.ToArray();
}
}
Использование
foreach (var child in transform.GetInactiveChildrenWithName("name"))
{
//делаем всякие прикольные штуки
}
Не тестил )
Избегайте использования LINQ
Хотя LINQ может быть очень четким и удобным для чтения и записи, обычно требуется гораздо больше вычислительных ресурсов и особенно больший объем памяти, чем написание алгоритма вручную.
Избегайте использования C#
Хотя C# может быть очень четким и удобным для чтения и записи, обычно требуется гораздо больше вычислительных ресурсов и особенно больший объем памяти, чем написание алгоритма на C++.
Niker писал(а):если руки из опы, то тут ничего не поможет.
IDoNotExist писал(а):Niker писал(а):если руки из опы, то тут ничего не поможет.
Да, по вам это видно. Это у вас же LINQ тормозит.
Microsoft писал(а):Although LINQ can be very clean and easy to read and write, it generally requires much more computation and particularly more memory allocation than writing the algorithm out manually.
seaman писал(а):Зависит от того как Вы написали алгоритм"вручную". Если просто заменить, например Where на foreach - много не выиграете.
Тут есть benchmark:
https://jacksondunstan.com/articles/2994
ilkalawson писал(а)::-@ ... опять пошли меренья наносекундами, в движке где все решает кол-во кадров.
Niker писал(а):Скорее память решает.
Ее просто, тупо, может не хватить.
Ну это касается телефонов.
Комп - фиолетово, можно напичкать.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12