Объясните мне, а то не врублюсь, как будет быстрее и лучше, и почему:
Так:
A = C.B["A"].GetComponent<Button>();
F = C.B["F"].GetComponent<Button>();
B = C.B["B"].GetComponent<Button>();
H = C.B["H"].GetComponent<Button>();
Или так:
C = C.B;
A = C["A"].GetComponent<Button>();
F = C["F"].GetComponent<Button>();
B = C["B"].GetComponent<Button>();
H = C["H"].GetComponent<Button>();
Или оба варианты равны?
C.B - это коллекция new Dictionary<string, GameObject>();
Самое дорого здесь это GetComponent. Лучше ваши кнопки закешировать в словаре, если так надо. Dictionary. То, о чем, вы думаете - по времени выполнения даст разницу, несоизмеримо маленькую, по сравнению с вызовом GetComponent.
А вообще, что мешает самому проверить, что здесь будет быстрее?
Я вообщем понял, бессмысленно использовать для этого Dictionary и GetComponent.
Так как естьTransform, мы можем в скрипте вызвать индекс transform.GetChild(index).
public static Transform Transform(string Name) {
Transform tm = c.transform;
for (int i = 0; i < tm.childCount; ++i) {
Transform child = tm.GetChild(i);
if (child.name.Equals(Name, StringComparison.OrdinalIgnoreCase)) {
return child;
}
}
return null;
}
public static Transform Transform(GameObject Object, string Name) {
Transform tm = Object.transform;
for (int i = 0; i < tm.childCount; ++i) {
Transform child = tm.GetChild(i);
if (child.name.Equals(Name, StringComparison.OrdinalIgnoreCase)) {
return child;
}
}
return null;
}
По этому создавать еще одну промежность в виде Dictionary<string,GameObject>, а после еще и GetComponent, никакого смысла нет.
Другое дело, на сколько быстро будет работать Equals и есть ли решения лучше, для сравнения строк, не вариант: child.name == Name.
Продвижение своими сайтами как стратегия роста и независимости