Показать сообщение отдельно
Старый 21.09.2011, 12:04   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Как назначить движение обьекта

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;

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием