Player player = (Player)FindObjectOfType(typeof(Player));
Player player = [выражение]
- объявляем переменную player типа Player (есть такой скрипт, он определяет тип)
Player player =
(Player)FindObjectOfType(typeof(Player));
- присваиваем этой переменной найденный в сцене объект типа Player (typeof(Player)).
Т.к. функция FindObjectOfType возвращает тип UnityEngine.Object, базовый для всех объектов Unity, то его необходимо привести к типу Player, чтобы присвоить переменной такого типа. Об этом говорит запись прямого приведения типов Player player =
(Player)[объект,тип которого приводится].
Это особенности строго типизированного объектно-ориентированного языка.
Про приведение типов:
запись
Player player = (Player)[выражение] не проверяет тип объекта, переданный в [выражение]. Если [выражение] имеет тип отличный от Player и не является наследником типа Player, то на данной строке произойдет ошибка. Безопасное приведение типов можно выполнить следующим образом:
Player player = [выражение] as Player. В таком случае, если в [выражение] находится тип, не приводимый к типу Player в переменную player установится значение null.
Пример:
Player player = FindObjectOfType(typeof(Player)) as Player;
if(player != null)
{
//действие с переменной player;
}