Приветствую Вас, дорогие разработчики. В данной статье мы научимся искать игровые объекту по его имени, и по тегу. Ведь при разработке игр нам довольно часто нужно находить игровые объекты, для дальнейшего выполнения каких-либо действий. Приступим сразу к делу.
Поиск объекта по имени
Для того, чтобы найти объект по его имени, необходимо воспользоваться методом GameObject.Find. Посмотрим реализацию данного метода на примере:
public GameObject obj;
void Awake()
{
obj = GameObject.Find("NameGameObject");
}
Обратите внимание, что в первой строке мы создали переменную obj, чтобы в ней хранить ссылку на игровой объект. А в пятой строке, воспользовавшись методом GameObject.Find, получили сам объект по его имени.
Поиск объекта по тегу
Теперь давайте получим ссылку на наш объект по тегу. Для этого воспользуемся методом GameObject.FindGameObjectWithTag:
public GameObject obj;
void Awake()
{
obj = GameObject.FindGameObjectWithTag("TagName");
}
Как видите, смысл такой же, как и в предыдущем примере. Всё очень просто. Только не забудьте указать тег для Вашего объекта, перед запуском данного скрипта. Иначе объект найден не будет.
Важно: Если в Вашей сцене находится несколько объектов с одинаковыми тегами, то метод GameObject.FindGameObjectWithTag найдёт только самый первый объект. Поэтому, существует ещё один способ, который позволит найти все объекты по указанному тегу.
Поиск массива объектов по тегу
Чтобы найти массив объектов по тегу, воспользуемся методом GameObject.FindGameObjectsWithTag. Вы наверное обратили внимание, что название данного меотда почти 1 в 1 схоже с предыдущим методом, за исключением добавленной быквы s в середине названия.
Рассмотрим пример использования метода GameObject.FindGameObjectsWithTag:
public GameObject[] obj;
void Awake()
{
obj = GameObject.FindGameObjectsWithTag("TagName");
}
Обратите внимание, что при использовании метода GameObject.FindGameObjectsWithTag, в первой строке мы должны оказать, что нам нужен массив объектов, при помощи квадратных скобок [].
- Поиск по id
- Поиск по тегу
- Получить всех потомков
-
Поиск по
name
: getElementsByName - Другие способы
Стандарт DOM предусматривает несколько средств поиска элемента. Это методы getElementById
, getElementsByTagName
и getElementsByName
.
Более мощные способы поиска предлагают javascript-библиотеки.
Поиск по id
Самый удобный способ найти элемент в DOM – это получить его по id
. Для этого используется вызов document.getElementById(id)
Например, следующий код изменит цвет текста на голубой в div
‘е c id="dataKeeper"
:
document.getElementById('dataKeeper').style.color = 'blue'
Поиск по тегу
Следующий способ – это получить все элементы с определенным тегом, и среди них искать нужный. Для этого служит document.getElementsByTagName(tag)
. Она возвращает массив из элементов, имеющих такой тег.
Например, можно получить второй элемент(нумерация в массиве идет с нуля) с тэгом li
:
document.getElementsByTagName('LI')[1]
Что интересно, getElementsByTagName
можно вызывать не только для document
, но и вообще для любого элемента, у которого есть тег (не текстового).
При этом будут найдены только те объекты, которые находятся под этим элементом.
Например, следующий вызов получает список элементов LI
, находящихся внутри первого тега div
:
document.getElementsByTagName('DIV')[0].getElementsByTagName('LI')
Получить всех потомков
Вызов elem.getElementsByTagName('*')
вернет список из всех детей узла elem
в порядке их обхода.
Например, на таком DOM:
<div id="d1"> <ol id="ol1"> <li id="li1">1</li> <li id="li2">2</li> </ol> </div>
Такой код:
var div = document.getElementById('d1') var elems = div.getElementsByTagName('*') for(var i=0; i<elems.length; i++) alert(elems[i].id)
Выведет последовательность: ol1, li1, li2
.
Поиск по name
: getElementsByName
Метод document.getElementsByName(name)
возвращает все элементы, у которых имя (атрибут name
) равно данному.
Он работает только с теми элементами, для которых в спецификации явно предусмотрен атрибут name
: это form
, input
, a
, select
, textarea
и ряд других, более редких.
Метод document.getElementsByName
не будет работать с остальными элементами типа div
,p
и т.п.
Другие способы
Существуют и другие способы поиска по DOM: XPath, cssQuery и т.п. Как правило, они реализуются javascript-библиотеками для расширения стандартных возможностей браузеров.
Также есть метод getElementsByClassName
для поиска элементов по классу, но он совсем не работает в IE, поэтому в чистом виде им никто не пользуется.
Частая опечатка связана с отсутствием буквы s в названии метода getElementById
, в то время как в других методах эта буква есть: getElementsByName
.
Правило здесь простое: один элемент – Element
, много – Elements
. Все методы *Elements*
возвращают список узлов.
Определить вид объекта по ссылке |
Я |
14.09.12 – 10:55
Добрый день, возник такой вопрос, как определить, что за объект метаданных используется, по его ссылке, т.е
есть тип СправочникСсылка.Сотрудники, например, нужно определить, что это именно справочник, если ДокументСсылка, то что это документ соответственно, как это сделать?
1 – 14.09.12 – 10:58
Если Справочники.ТипВсеСсылки.СодержитТип(ТипЗнч(Ссылка)) Тогда
…это справочник
2 – 14.09.12 – 11:00
ок, спасибо
3 – 14.09.12 – 11:09
Ещё вариант…
ТипСтрокой = Строка(ТипЗнч(Ссылка));
ВидМетаданногоСтрокой = Лев(ТипСтрокой, Найти(ТипСтрокой, “.”) – 1);
Если ВидМетаданногоСтрокой = “ДокументСсылка” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “СправочникСсылка” Тогда
…
ИначеЕсли ВидМетаданногоСтрокой = “ЗадачаСсылка” Тогда
КонецЕсли;
Возможно, это будет несколько побыстрее, чем (1) работать.
4 – 14.09.12 – 11:13
Тогда уж
Метаданные.Справочники.Содержит(Ссылка.Метаданные())
5 – 14.09.12 – 12:07
(4) А всё-же как быстрее по замеру производительности – (1), (3) или (4) ???
6 – 14.09.12 – 12:17
(5) 3 критично к языку, например
7 – 14.09.12 – 12:18
(3) Не рабочий, т.к. Строка(ТипЗнч(Ссылка)) не будет содержать ни “ДокументСсылка”, ни “СправочникСсылка”
[верно для 8.2]
8 – 14.09.12 – 12:20
Если через строки то уж тогда Ссылка.Метаданные().ПолноеИмя()
9 – 14.09.12 – 12:20
(5) на 8.2 не будет работать (3), там Синоним объекта в строке
10 – 14.09.12 – 12:20
я бы (4) использовал
11 – 14.09.12 – 12:21
по феншую имхо (1)
12 – 14.09.12 – 12:23
(11) только со скобками после ТипВсессылки 🙂
13 – 14.09.12 – 12:24
Согласен, исключает ошибку в случае если проверяемое значение не ссылочного типа
14 – 14.09.12 – 12:24
(13) и помоему быстрее чем через метаданные
15 – 14.09.12 – 12:31
(14) Затестил.
Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Справочники.Валюты.ПустаяСсылка()))
примерно в два раза быстрее чем
Метаданные.Справочники.Содержит(Справочники.Валюты.ПустаяСсылка().Метаданные())
но в 2 раза вылилось что типа “5 миллинных секунды vs 9 миллионных”
16 – 14.09.12 – 12:33
Функция ПолучитьИмяБазовогоТипаПоТипуОбъекта(ТипОбъекта) Экспорт
МетаданныеТипа = Метаданные.НайтиПоТипу(ТипОбъекта);
Если МетаданныеТипа = Неопределено Тогда
Возврат “УдалениеОбъекта”;
ИначеЕсли Метаданные.РегистрыСведений.Содержит(МетаданныеТипа) Тогда
Возврат “РегистрыСведений”;
ИначеЕсли Метаданные.Документы.Содержит(МетаданныеТипа) Тогда
Возврат “Документы”;
ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеТипа) Тогда
Возврат “Справочники”;
ИначеЕсли Метаданные.РегистрыНакопления.Содержит(МетаданныеТипа) Тогда
Возврат “РегистрыНакопления”;
ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(МетаданныеТипа) Тогда
Возврат “РегистрыБухгалтерии”;
Иначе
Возврат “”;
КонецЕсли;
КонецФункции
Соответственно вызов
ИмяБазовогоТипа = ПолучитьИмяБазовогоТипаПоТипуОбъекта(ТипЗнч(ТекущийРеквизит.ПолучитьОбъект()));
17 – 14.09.12 – 12:37
(7)Тьху-ё и правда (((.
(14), (15) А вот как надо (Ссылка.Метаданные() – быстрейший способ получения метаданных):
ПолноеИмяМетаданного = Ссылка.Метаданные().ПолноеИмя();
ВидМетаданногоСтрокой = Лев(ПолноеИмяМетаданного, Найти(ПолноеИмяМетаданного, “.”) – 1);
Если ВидМетаданногоСтрокой = “Документ” Тогда
//это документ
ИначеЕсли ВидМетаданногоСтрокой = “Справочник” Тогда
//это справочник
…
ИначеЕсли ВидМетаданногоСтрокой = “Задача” Тогда
//это задача
КонецЕсли;
18 – 14.09.12 – 12:39
(16) Очень медлительный вариант
19 – 14.09.12 – 12:41
короче (1) наше всё, остальное быдлокод! С пятницей!
20 – 14.09.12 – 12:43
(18) Зато правильный ибо не зависит от представления. А в практике уже были случае когда 1С меняла представление при смене платфйормы
21 – 14.09.12 – 12:45
(20) Это (17) тоже не зависит от представления. Насчет (3) – полностью согласен, я ошибся.
22 – 14.09.12 – 12:45
(17) Затестил.
ПолноеИмяМетаданного=Справочники.Валюты.ПустаяСсылка().Метаданные().ПолноеИмя();х=Лев(ПолноеИмяМетаданного, Найти(ПолноеИмяМетаданного, “.”)-1)=”Справочник”;
Самый медленный вариант. Правда, с минимальным отставанием от других.
23 – 14.09.12 – 12:46
Тоже за (1) тогда 😉
24 – 14.09.12 – 12:48
(22) На операцию Справочники.Валюты.ПустаяСсылка() львиная доля времени уходит, а в (17) просто Ссылка.Метаданные() и всё.
25 – 14.09.12 – 12:49
(24) В идентичных условиях. См (15)
26 – 14.09.12 – 12:50
Возможно, (17) в случае именно “копмлексной функции” и минимально лучше будет по скорости, но (1) лучше по читабельности и надежности
27 – 14.09.12 – 12:50
Присоединяюсь, всех с пятницей.
28 – 14.09.12 – 13:28
(26) Выбрал ссылку на перечисление, чтоб внизу разветвляющейся структуры обоих алгоритмов было и проверок было максимум. (3) в 4 раза быстрее (1) уже при малом объеме метаданных (конфа в 5-7 раз меньше Бух 2.0)
Тестируем (3) на типе объекта “Перечисление”
&НаСервереБезКонтекста
Процедура Третий(СсылкаНаОбъект)
ПолноеИмяМетаданного = СсылкаНаОбъект.Метаданные().ПолноеИмя();
ВидМетаданногоСтрокой = Лев(ПолноеИмяМетаданного, Найти(ПолноеИмяМетаданного, “.”) – 1);
Если ВидМетаданногоСтрокой = “Документ” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “Справочник” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “ПланВидовХарактеристик” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “ПланВидовРасчета” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “Задача” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “БизнесПроцесс” Тогда
ИначеЕсли ВидМетаданногоСтрокой = “Перечисление” Тогда
КонецЕсли;
КонецПроцедуры
Время 0,00011
Тестируем (1) на типе объекта “Перечисление”
&НаСервереБезКонтекста
Процедура Первый(СсылкаНаОбъект)
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(СсылкаНаОбъект)) Тогда
КонецЕсли;
КонецПроцедуры
Время 0,00046
29 – 14.09.12 – 13:32
(28) а всё равно (1) правильней, и такие универсальные не используются как правило
30 – 14.09.12 – 13:44
(29) >правильней
чем?
>такие универсальные не используются как правило
В типовых в модуле ОбщегоНазначения эти механизмы присутствуют.
31 – 14.09.12 – 13:45
(0) эта байда в БСП в обоих вариантах есть, причем идентикатор класса объекта метаданных там определяться через хмл-типизацию и англоязный аналог и это привильно
32 – 14.09.12 – 13:49
(30) просто по феншую это. религиозно правильно.
Как правило не сипользуется – не значит что вобще
33 – 14.09.12 – 13:50
(30) (16) из типовой БП 2.0
34 – 14.09.12 – 13:55
(32) (1) по феншую, (3) – по пьяни, (17) – по быстродействию.
(33) Верно. На больших конфигурациях это будет работать в десятки раз медленнее.
35 – 14.09.12 – 13:56
(34) Да нету там быстродействия
36 – 14.09.12 – 13:57
(28)
Процедура Третий(СсылкаНаОбъект) ПолноеИмяМетаданного = СсылкаНаОбъект.Метаданные().ПолноеИмя(); ВидМетаданногоСтрокой = Лев(ПолноеИмяМетаданного, Найти(ПолноеИмяМетаданного, ".") - 1); Если ВидМетаданногоСтрокой = "Документ" Тогда ИначеЕсли ВидМетаданногоСтрокой = "Справочник" Тогда ИначеЕсли ВидМетаданногоСтрокой = "ПланВидовХарактеристик" Тогда ИначеЕсли ВидМетаданногоСтрокой = "ПланВидовРасчета" Тогда ИначеЕсли ВидМетаданногоСтрокой = "Задача" Тогда ИначеЕсли ВидМетаданногоСтрокой = "БизнесПроцесс" Тогда ИначеЕсли ВидМетаданногоСтрокой = "Перечисление" Тогда КонецЕсли; КонецПроцедуры Процедура Первый(СсылкаНаОбъект) Тип=ТипЗнч(СсылкаНаОбъект); Если Документы.ТипВсеСсылки().СодержитТип(Тип) Тогда ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(Тип) Тогда ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(Тип) Тогда ИначеЕсли ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(Тип) Тогда ИначеЕсли Задачи.ТипВсеСсылки().СодержитТип(Тип) Тогда ИначеЕсли БизнесПроцессы.ТипВсеСсылки().СодержитТип(Тип) Тогда ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(Тип) Тогда КонецЕсли; КонецПроцедуры СсылкаНаОбъект=Перечисления.ABCКлассификация.ПустаяСсылка(); Для i=1 по 100000 цикл Третий(СсылкаНаОбъект); конецЦикла; // 1.966 Для i=1 по 100000 цикл Первый(СсылкаНаОбъект); конецЦикла;// 3.057 СсылкаНаОбъект=Документы.ABCКлассификацияПокупателей.ПустаяСсылка(); Для i=1 по 100000 цикл Третий(СсылкаНаОбъект); конецЦикла; // 1.651 Для i=1 по 100000 цикл Первый(СсылкаНаОбъект); конецЦикла;// 1.058
Т.е. в неблагоприятных условиях стравнение строк выполняется быстрее, чем поиск (кто бы сомневался) а в благоприятных, напротив твоя ф-я медленней.
При этом метод через типы может работать с любым типом! Зачем при прочих равных выбирать менее надежный вариант?
37 – 14.09.12 – 13:58
И (29) прав, зачем универсальная? Чтоб потом опять строить кучу Если вокруг возвращенного значения?
38 – 14.09.12 – 14:25
(36) Это хороший анализ алгоритмов. Теперь можно ставить точку.
GANR
39 – 14.09.12 – 14:26
.
На чтение 2 мин. Просмотров 205 Опубликовано 15.12.2019
Пусть переменная СсылкаНаОбъект принадлежит любому ссылочному типу: справочнику, документу, плану счетов и т.д. Получить объект по ссылке можно так:
Пусть переменная Объект принадлежит любому объектному типу. Получить ссылку из объекта можно так:
Будьте внимательны, реквизит “Ссылка” заполняется только при записи объекта. Если объект не записан — ссылки не будет.
Чтобы получить объект имеющейся у вас ссылки следует использовать метод ссылки ПолучитьОбъект().
Пусть у нас имеется реквизит или переменная МояСсылка содержащая в себе ссылку на справочник, документ или т.п.
Работает во всех конфигурациях, в управляемом приложении используется на Сервере.
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Документы
Описание:
Документ — одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и корректировка.
В большинстве своем документы, которые создаются в процессе настройки конфигурации задачи, являются электронными аналогами стандартных бумажных документов, являющихся основаниями для тех или иных учетных действий или расчетов. Тем не менее, использование этого типа данных может выходить далеко за рамки простой фиксации изменений, внесенных в учетные регистры.
Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существуют реквизиты, которые создаются автоматически — это «Дата» и «Номер». Номер создается, если при конфигурировании длина номера указана больше 0. Другие реквизиты документа определяются в конфигураторе отдельно для каждого создаваемого вида документа.
Документы в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Рассмотрим, как в Unity на языке C# получать доступ из одного скрипта к переменным и функциям других скриптов.
Юнити: Как обратиться к другому скрипту на том же объекте
GetComponent<DrygoiScript>().peremennayaScripta = 5;
Эта “команда” обращается к другому скрипту, который в виде компонента висит на том же объекте, что и скрипт, где вы это пишете. У этого скрипта есть переменная с именем peremennayaScripta, ей присваивается значение 5. Так можно обращаться к любым компонентам вашего игрового объекта, начиная от ваших скриптов, висящих на нем, и заканчивая обычными юнитивскими компонентами – Rigitbody, Animator, Transform и прочими.
Unity: Как получить ссылку на другой скрипт с одного объекта
Но вы можете не писать каждый раз “команду” GetComponent<>, а создать переменную для ссылки на компонент. Пишете:
DrygoiScript peremennayaSsilkaNaDrygoiScript = GetComponent<DrygoiScript>();
Вы тут сначала создали переменную с именем peremennayaSsilkaNaDrygoiScript и тип переменной DrygoiScript (что означает, что туда можно поместить только ссылку на DrygoiScript, но не на любой другой скрипт).
Потом вы через знак “=” присвоили этой переменной ссылку на DrygoiScript, который висит на том же объекте, что и этот скрипт с кодом.
Теперь вы можете написать:
peremennayaSsilkaNaDrygoiScript.peremennayaScripta = 5;
Через peremennayaSsilkaNaDrygoiScript произойдет обращение к тому скрипту (это аналогично GetComponent<DrygoiScript>()), и его переменная peremennayaScripta установится в значение 5.
Unity3d: как получить ссылку на другой объект
На другом объекте может висеть нужный вам скрипт, и вы хотите изменить его переменные или вызвать его функцию из другого скрипта? Тогда сначала нужно получить ссылку на него. Для этого создаете переменную в исходном скрипте:
public GameObject ssilkaNaObject;
Тут вы создали публичную переменную (теперь она будет видна в инспекторе) с типом GameObject (это базовый тип для любого объекта на сцене) и именем ssilkaNaObject. Теперь в инспектор вы можете перетянуть в нее нужный вам объект. Но надо еще получить ссылку на конкретный компонент (скрипт или еще что-либо навешанное на него) этого объекта. Например, на объекте висит скрипт с именем DrygoiScript, и вы хотите получить к нему доступ:
ssilkaNaObject.GetComponent<DrygoiScript>().peremennayaScripta = 5;
Тут вы по ссылке ssilkaNaObject обращаетесь к объекту, который перетянули в инспекторе в переменную ssilkaNaObject, и далее обращаетесь к конкретному компоненту GetComponent<DrygoiScript>(), это нужный вам скрипт, и меняете у этого скрипта переменную под названием peremennayaScripta на 5. Аналогично с вызовом какой-либо функций:
ssilkaNaObject.GetComponent<DrygoiScript>().MyFuction();
Тут вы вызвали функцию с именем MyFuction() в скрипте DrygoiScript, который висит на ssilkaNaObject.
Юнити: как кешировать ссылку на ваш скрипт
Но GetComponent<> ресурсозатратная операция, поэтому лучше сразу создать переменную, чтобы положить туда ссылку на конкретный компонент (ваш скрипт). Ссылку на объект мы уже получили, и она называется ssilkaNaObject, но не получили ссылку на скрипт DrygoiScript, поэтому и приходится каждый раз писать GetComponent<DrygoiScript>().
DrygoiScript peremennayaSsilkaNaDrygoiScript = ssilkaNaObject.GetComponent<DrygoiScript>();
Теперь переменная peremennayaSsilkaNaDrygoiScript будет содержать ссылку на ваш скрипт, который висит на объекте, на который ссылается ssilkaNaObject. И можно без всяких GetComponent писать:
peremennayaSsilkaNaDrygoiScript.peremennayaScripta = 5; // изменение значения переменной в другом скрипте peremennayaSsilkaNaDrygoiScript.MyFuction(); // вызов функции другого скрипта
Это называется кеширование. Мы с вами закешировали, как сам объект, на котором скрипт, так и ссылку на скрипт. Грубо говоря – кеширование это создание ссылки на нужную вещь, по которой потом можно обращаться к объекту, чтобы не приходилось каждый раз его искать заново.
Юнити3Д: как получить доступ к объекту из другого скрипта
До этого мы нужный нам объект переносили вручную через инспектор Unity в переменную ssilkaNaObject , но получить к нему доступ из кода можно несколькими способами.
public GameObject ssilkaNaObject; // не забывайте создавать переменную, которая будет ссылкой на объект ssilkaNaObject = GameObject.Find("ИмяОбъектаПоИерархии"); // поиск объекта по имени
Тут в переменную ssilkaNaObject мы заносим то, что найдет компьютер по имени в иерархии сцены Unity. Минус в том, что придется запоминать, что переименовывать объект нельзя.
ssilkaNaObject = GameObject.FindGameObjectWithTag("Player"); // поиск объекта по тегу
Так мы получим ссылку на первый объект, который найдет компьютер по тегу Player (задается в инспекторе). Если объектов несколько с одним тегом, то в ссылку компьютер положит первый попавшийся.
Советы
Все операции, когда вы переменной присваиваете ссылку на объект или компонент (скрипт) проводят, как правило, в методе Start. Сами переменные создаются вне методов, чтобы они были доступны по всему скрипту, а не были локальными в каком-то методе. А значения им присваиваются в методе Start, который срабатывает когда запускается сцена, тогда Unity3d и найдет нужный объекты, и запишет в ваши переменные ссылки на них. Например:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TestPoiskObjectov : MonoBehaviour { // это место вне каких-либо методов public GameObject ssilkaNaObject; // не забывайте создавать переменную, которая будет ссылкой на объект public DrygoiScript peremennayaSsilkaNaDrygoiScript; // переменная для ссылки на конкретный скрипт void Start () { // поиск объекта по имени ssilkaNaObject = GameObject.Find("ИмяОбъектаПоИерархии"); // получение ссылки на компонент с другого объекта DrygoiScript peremennayaSsilkaNaDrygoiScript = ssilkaNaObject.GetComponent<DrygoiScript>(); } void Update () { } }