Объясните мне, а то не врублюсь, как будет быстрее и лучше, и почему:
Так:
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
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хочу сформировать модель таким образом что б при возвращение на клиент я обращался через точку и свойство а не через номер в массивеПример
Постепенно начал изучать IoC и всю эту кухню и вот не как не могу понять, как работать с ними в WPF приложение по правилам MVVM