Передача значения переменной между скриптами в Unity

Относительно недавно начал изучать такой инструмент как Unity, и возник такой вот вопрос : У меня есть несколько объектов, к ним присоединен один и тот же скрипт, в другом скрипте я должен получить значение переменной из первого скрипта, но мне нужно что бы при этом для каждого объекта было свое значение данной переменной? Как быть в таком случае? Сразу извиняюсь если вопрос тупой.


Ответы (2 шт):

Автор решения: Арман

Если переменная не статическая то в каждом объекте он имеет своё особенное значение не связанные с другими.


Скрипт который висит на множество объектов

public class Identificator: MonoBehaviour
{
    public int Id;
}

Скрипт который контролирует всё предыдущие скрипты.

[SerializedField] private GameObject _ObjectsArray;

private int[] GetAll()
{
    int[] _IdArray = new int[_ObjectsArray.Length];
    for(int i = 0; i < _ObjectsArray.Length; i++)
    {
        _IdArray[i] = _ObjectsArray[i].GetComponent<Identificator>().Id;
    }
    return _IdArray;
}

private void Start()
{
    Debug.Log(GetAll());
}
→ Ссылка
Автор решения: Максим Фисман

Если у вас есть несколько объектов и на каждом висит одинаковый скрипт с переменными, то у каждого объекта значения переменных будут СВОИ. Таким образом, например, вы хотите получить значение переменной a на объекте под названием gameObj, на котором висит скрипт Logic. Тогда в другом скрипте, где вы хотите получить эту информацию, команда должна выглядеть так:

gameObj.GetComponent<Logic>().a;

Переменная a, естественно, должна быть публичной.

А вообще, этот вопрос очень простой и его можно нагуглить за пол минуты. Советую вам так и делать, потмоу что это быстрее, чем ждать неопределенное количество времени, пока вам ответят на сайте

→ Ссылка