Как получать переменную из другого скрипта Unity в update?

В Unity, чтобы получить переменную из другого скрипта в функции Update(), существует несколько способов. Вот некоторые из них:

1. Ссылка на компонент:
Вы можете использовать ссылку на компонент, в котором находится переменная. Для этого, в скрипте, который имеет доступ к переменной, создайте public переменную ссылочного типа и присвойте ей ссылку на компонент. Затем, в функции Update() этого скрипта, вы сможете получить доступ к переменной через ссылку на компонент.

Пример:

public class ScriptA : MonoBehaviour
{
    public int variable;
}

public class ScriptB : MonoBehaviour
{
    public ScriptA scriptA;
    
    void Update()
    {
        int variableA = scriptA.variable;
        // Делать что-то с variableA
    }
}

2. Статическая переменная:
Если переменная в другом скрипте является статической, то вы можете получить доступ к ней без необходимости ссылки на объект этого скрипта. В этом случае, в функции Update(), вы можете обращаться к переменной напрямую, используя имя класса, в котором объявлена статическая переменная.

Пример:

public class ScriptA : MonoBehaviour
{
    public static int variable;
}

public class ScriptB : MonoBehaviour
{
    void Update()
    {
        int variableA = ScriptA.variable;
        // Делать что-то с variableA
    }
}

3. События и делегаты:
Вы можете использовать события и делегаты для обмена информацией между скриптами. Создайте событие в скрипте, содержащем переменную, и определите также делегат. Затем, в функции Update() этого скрипта, вызовите событие и передайте переменную в качестве аргумента. В другом скрипте, подпишитесь на это событие и получите переданную переменную.

Пример:

public class ScriptA : MonoBehaviour
{
    public delegate void VariableUpdatedHandler(int variable);
    public static event VariableUpdatedHandler OnVariableUpdated;
    
    public int variable;
    
    void Update()
    {
        if (OnVariableUpdated != null)
        {
            OnVariableUpdated.Invoke(variable);
        }
    }
}

public class ScriptB : MonoBehaviour
{
    void OnEnable()
    {
        ScriptA.OnVariableUpdated += HandleVariableUpdated;
    }

    void OnDisable()
    {
        ScriptA.OnVariableUpdated -= HandleVariableUpdated;
    }

    void HandleVariableUpdated(int variableA)
    {
        // Делать что-то с variableA
    }
}

В зависимости от вашей ситуации, вы можете выбрать оптимальный способ получения переменной из другого скрипта в функции Update().