1. List<RaycastResult> results = new List<RaycastResult>();
_raycaster.Raycast(eventData, results);
2. if (results != null)
{
3. if (results[0].gameObject.tag == "ItemIcon")
Строка 1 инициализирует results
, поэтому проверка в строке 3 никогда не будет ложной. То, что результаты инициализированы, не означает, что в них есть какие-либо записи, поэтому строка 3 выдаст ошибку, если результатов нет.
Как уже отмечали другие, строка 2 должна быть:
if(results.Any())
.Any()
лучше, чем .Count > 0
, поскольку подразумевает намерение «что-то есть в списке», а не «количество больше 0».