Unity linq возвращает соответствующий объект - PullRequest
0 голосов
/ 12 марта 2020

Я играю с System.Linq в единстве, и мне интересно, возможно ли это достичь:

Я хотел бы найти список RaycastHits и содержит ли он хит с указанным c компонент на нем Я хотел бы вернуть его вместо RaycasHit

hits.FirstOrDefault(hit => hit.transform.GetComponent<Target>());

Это возвращает мне RaycastHit, который содержит компонент Target. Вместо этого я хотел бы сразу получить этот целевой компонент, чтобы мне больше не приходилось снова получать компонент в новой строке

RaycastHit target = hits.FirstOrDefault(hit => hit.transform.GetComponent<Target>());

Target combatTarget = target.transform.GetComponent<Target>();

Можно ли привести его или сопоставить в одну строку ??

1 Ответ

4 голосов
/ 12 марта 2020

Сначала сопоставьте его, затем получите первое или значение по умолчанию:

Target = hits
        .Select(hit => hit.transform.GetComponent<Target>())
        .FirstOrDefault(item => item != null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...