Web server is returning an unknown error Error code 520
There is an unknown connection issue between Cloudflare and the origin web server. As a result, the web page can not be displayed.
What can I do?
If you are a visitor of this website:
Please try again in a few minutes.
If you are the owner of this website:
There is an issue between Cloudflare’s cache and your origin web server. Cloudflare monitors for these errors and automatically investigates the cause. To help support the investigation, you can pull the corresponding error log from your web server and submit it our support team. Please include the Ray ID (which is at the bottom of this error page). Additional troubleshooting resources.
Cloudflare Ray ID: 7a6580ed27c22da0 • Your IP: Click to reveal 88.135.219.175 • Performance & security by Cloudflare
Как получить доступ к переменной другого скрипта
Привет начинающим разработчикам! Очень часто нам приходится из одного скрипта обращаться к тем переменным, которые находятся в другом скрипте(компоненте) нашего объекта. В данной статье мы подробно разберёмся, как обращаться к переменной другого скрипта на примере:
- Обращаемся из скрипта с названием Player.
- Обращаемся к переменной text, которая находится в скрипте Money.
Первым делом в скрипте Player нам необходимо создать(объявить) переменную с типом, соответствующему названию скрипта, к переменной которого хотите получить доступ. В нашем случае, этот скрипт называется Money. Поэтому новая переменаня должна иметь тип Money. А саму переменную назовём, например, linkMoney:
Далее в переменную linkMoney присвоим ссылку на скрипт(компонент) Money:
Готово! В переменную linkMoney мы записали ссылку на наш скрипт Money, а это значит, что мы теперь имеем доступ ко ВСЕМ публичным переменным и методам скрипта Money. Теперь можно, например, изменить значение переменной text. Давайте сделаем это.
Теперь совместим все наши кусочки кодов, и посмотрим как же выглядит ВЕСЬ код скрипта Player.
На этом всё. Если у Вас остались какие-либо вопросы, пишите в комментариях. Если нет, то жду Ваших лайков 🙂
Использование переменной из 1 скрипта в другом Unity [дубликат]
Есть следующий скрипт и я хотел бы использовать переменную temp в другом скрипте. Не могли бы вы подробно рассказать — как? Пробовал разными нагугленными способами, но никак не могу дойти.
В вашем скрипте temp — это локальная переменная метода InputX , она существует только пока выполняется метод. Для того, чтобы переменная была доступна извне, объявите её в классе:
Обратите внимание на модификатор public , он отвечает за уровень доступности переменной.
Далее. В Unity объект MonoBehaviour (т.е. игровой скрипт) существует в рантайме, если он находится на игровом объекте, который в свою очередь присутствует на активной сцене. Существует практика размещать на сценах скриптхолдеры — пустые игровые объекты, на которые вешаются нужные «общие» скрипты. Если вы создадите подобный объект, и разместите на нём скрипт NewBehaviourScript , обратиться к переменной можно будет примерно так:
Вы так же можете объявить переменную-ссылку на экземпляр скрипта для удобства:
Управление игровыми объектами (GameObjects) с помощью компонентов
В редакторе Unity вы изменяете свойства Компонента используя окно Inspector. Так, например, изменения позиции компонента Transform приведет к изменению позиции игрового объекта. Аналогично, вы можете изменить цвет материала компонента Renderer или массу твёрдого тела (RigidBody) с соответствующим влиянием на отображение или поведение игрового объекта. По большей части скрипты также изменяют свойства компонентов для управления игровыми объектами. Разница, однако, в том, что скрипт может изменять значение свойства постепенно со временем или по получению ввода от пользователя. За счет изменения, создания и уничтожения объектов в заданное время может быть реализован любой игровой процесс.
Обращение к компонентам
Наиболее простым и распространенным является случай, когда скрипту необходимо обратиться к другим компонентам, присоединенных к тому же GameObject. Как упоминалось во разделе Введение, компонент на самом деле является экземпляром класса, так что первым шагом будет получение ссылки на экземпляр компонента, с которым вы хотите работать. Это делается с помощью функции GetComponent. Типично, объект компонента сохраняют в переменную, это делается в C# посредством следующего синтаксиса:
В UnityScript синтаксис немного отличается:
Как только у вас есть ссылка на экземпляр компонента, вы можете устанавливать значения его свойств, тех же, которые вы можете изменить в окне Inspector:
Дополнительная возможность, недоступная в окне Inspector — вызов функций экземпляра компонента:
Имейте ввиду, что нет причины, по которой вы не можете иметь больше одного пользовательского скрипта, присоединенного к одному и тому же объекту. Если вам нужно обратиться к одному скрипту из другого, вы можете использовать, как обычно, GetComponent, используя при этом имя класса скрипта (или имя файла), чтобы указать какой тип Компонента вам нужен.
Если вы попытаетесь извлечь Компонент, который не был добавлен к Игровому Объекту, тогда GetComponent вернет null; возникнет ошибка пустой ссылки при выполнении (null reference error at runtime), если вы попытаетесь изменить какие-либо значения у пустого объекта.
Обращение к другим объектам
Пусть иногда они и существуют изолированно, все же, обычно, скрипты отслеживают другие объекты. Например, преследующий враг должен знать позицию игрока. Unity предоставляет несколько путей получения других объектов, каждый подходит для конкретной ситуации.
Связывание объектов через переменные
Самый простой способ найти нужный игровой объект — добавить в скрипт переменную типа GameObject с уровнем доступа public:
Переменная будет видна в окне Inspector, как и любые другие:

Теперь вы можете перетащить объект со сцены или из панели Hierarchy в эту переменную, чтобы назначить его. Функция GetComponent и доступ к переменным компонента доступны как для этого объекта, так и для других, то есть вы можете использовать следующий код:
Кроме того, если объявить переменную с доступом public и заданным типом компонента в вашем скрипте, вы сможете перетащить любой объект, который содержит присоединенный компонент такого типа. Это позволит обращаться к компоненту напрямую, а не через игровой объект.
Соединение объектов через переменные наиболее полезно, когда вы имеете дело с отдельными объектами, имеющими постоянную связь. Вы можете использовать массив для хранения связи с несколькими объектами одного типа, но связи все равно должны быть заданы в редакторе Unity, а не во время выполнения. Часто удобно находить объекты во время выполнения, и Unity предоставляет два основных способа сделать это, описанных ниже.
Нахождение дочерних объектов
Иногда игровая сцена может использовать несколько объектов одного типа, таких как враги, путевые точки и препятствия. Может возникнуть необходимость отслеживания их в определенном скрипте, который управляет или реагирует на них (например, все путевые точки могут потребоваться для скрипта поиска пути). Можно использовать переменные для связывания этих объектов, но это сделает процесс проектирования утомительным, если каждую новую путевую точку нужно будет перетащить в переменную в скрипте. Аналогично, при удалении путевой точки придется удалять ссылку на отсутствующий объект. В случаях, наподобие этого, чаще всего удобно управлять набором объектов, сделав их дочерними одного родительского объекта. Дочерние объекты могут быть получены, используя компонент Transform родителя (так как все игровые объекты неявно содержат Transform):
Вы можете также найти заданный дочерний объект по имени, используя функцию Transform.Find:
Это может быть полезно, когда объект содержит дочерний элемент, который может быть добавлен или удален в игровом процессе. Хороший пример — оружие, которое может быть подобрано и выброшено.