Загружаем...
2 года и месяц назад
TryGetComponent вместо GetComponent в Unity и почему лучше и


При разработке игр на Unity важно оптимизировать каждый аспект вашего кода для обеспечения максимальной производительности. Одной из таких оптимизаций является использование метода TryGetComponent вместо традиционного GetComponent. В этом посте мы рассмотрим, почему TryGetComponent предпочтительнее и как его использовать.

Преимущества использования TryGetComponent
Повышенная производительность:
Метод TryGetComponent работает быстрее, так как он не создает исключений в случае неудачи, что может значительно снизить нагрузку на систему при частом вызове метода.

Уменьшение кода для обработки ошибок:
При использовании TryGetComponent вам не нужно обрабатывать исключения, что упрощает и делает ваш код чище.

Безопасность выполнения:
Метод возвращает булево значение, что позволяет легко проверять наличие компонента и предотвращать потенциальные ошибки выполнения.

Пример использования TryGetComponent
Для того чтобы продемонстрировать, как использовать TryGetComponent, приведем пример кода с использованием метода OnTriggerEnter и пользовательского скрипта:

Предположим, у нас есть пользовательский скрипт PlayerStats:



using UnityEngine;

public class PlayerStats : MonoBehaviour
{
public int health = 100;
public void TakeDamage(int damage)
{
health -= damage;
Debug.Log("Player took damage, health: " + health);
}
}


Теперь используем TryGetComponent для получения этого скрипта в методе OnTriggerEnter:



using UnityEngine;

public class DamageTrigger : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.TryGetComponent<PlayerStats>(out PlayerStats playerStats))
{
// Компонент PlayerStats найден, можно использовать playerStats
playerStats.TakeDamage(10);
}
else
{
// Компонент PlayerStats не найден, обработка отсутствия компонента
Debug.LogWarning("PlayerStats не найден на объекте " + other.name);
}
}
}


В этом примере мы используем TryGetComponent для поиска компонента PlayerStats. Если компонент найден, мы вызываем метод TakeDamage, иначе выводим предупреждение в консоль.

Использование TryGetComponent вместо GetComponent помогает сделать ваш код более эффективным и безопасным, что особенно важно при разработке сложных игровых проектов.

Этот пост поможет вам понять преимущества использования TryGetComponent и начать его применять в ваших проектах на Unity. По этому я сам использую постоянно или в 95% случаев именно TryGetComponent, в виде исключения когда использую GetComponent - когда я уверен и знаю что только 2 объекта сталкиваются только между собой


Наверх