порт Корсаров на Андроид: Как получить значение переменной из другого скрипта

понедельник, 18 августа 2025 г.

Как получить значение переменной из другого скрипта


Посмотрел на то, что умеет нейросеть Gemini, сижуи и думаю, а стоит ли вообще замарачиваться написанием мануалов по скриптам? Если кому-то потребуеться код который был использован в сборке, тотже Chat GPT все разложит по шагам. 

Но запросы неросетем тоже надо уметь составлять, да и перебирать скрипты спустя время в посках нужной строчки кода, при таких заметках, значительно упростит дело.

═══════⚓═══════

Чтобы получить значение переменой из одного скрипта в другом, вам нужно сначала получить ссылку на компонент другого скрипта, а затем получить доступ к его переменной.

Шаги:

1. В скрипте, где находится переменная (например, ScriptA):

2. Объявите переменную как public, чтобы она была доступна из других скриптов.

public class ScriptA : MonoBehaviour

{

public float myFloatValue = 10.0f;

}

3. В скрипте, который получает значение (например, ScriptB) - объявите переменную для хранения ссылки на другой скрипт:

public ScriptA scriptAInstance;
 
// Или другой тип скрипта, который содержит нужную переменную

4. Получите ссылку на экземпляр другого скрипта:

  • Через инспектор: Перетащите объект с ScriptA на слот scriptAInstance в инспекторе ScriptB.
  • Программным путем (например, через FindObjectOfType или GetComponent):
// Пример получения по типу скрипта

scriptAInstance = FindObjectOfType<ScriptA>();

5. Получите значение переменной.

float receivedValue = scriptAInstance.myFloatValue;

Debug.Log("Полученное значение: " + receivedValue);
👉В скрипте ScriptB для использования полученого зачения нужно использовать имя переменой receivedValue, а ни myFloatValue из скрипта ScriptA.

Важно:
  • Убедитесь, что объект, на который ссылается scriptAInstance, существует и имеет прикрепленный ScriptA.
  • При использовании namespaces, в скрипте ScriptB в директиве using необходимо указать выбранное пространсвенное имя заданное в ScriptA, чтобы компилятор мог его найти.
  • Если вы используете FindObjectOfType, убедитесь, что ScriptA был создан и активен на сцене, когда выполняется ScriptB.