Как взять переменную bool с другого скрипта без static?

В C# доступ к переменной, объявленной в одном скрипте, из другого скрипта без использования static может быть достигнут с помощью следующих механизмов и концепций языка:

1. Использование других средств связи между скриптами. Например, можно передавать информацию через параметры методов, аргументы событий и делегаты. Это позволяет передать значение переменной bool из одного скрипта в другой.
Например:

// Скрипт 1
public class Script1
{
    public void MethodWithBoolParam(bool value)
    {
        // Делаем что-то с переданным значением bool
    }
}

// Скрипт 2
public class Script2
{
    private void SomeMethod()
    {
        bool myBoolValue = true;
        Script1 script1 = new Script1();
        script1.MethodWithBoolParam(myBoolValue);
    }
}

2. Использование событий и делегатов. Это мощный механизм в C#, позволяющий установить связь между объектами и передавать информацию от одного объекта к другому без использования статических переменных.
Например:

// Скрипт 1
public class Script1
{
    public delegate void BoolValueDelegate(bool value);
    public event BoolValueDelegate OnBoolValueChanged;

    private bool myBoolValue;

    public bool MyBoolValue
    {
        get { return myBoolValue; }
        set 
        { 
            myBoolValue = value;
            OnBoolValueChanged?.Invoke(myBoolValue);
        }
    }
}

// Скрипт 2
public class Script2
{
    private void SomeMethod()
    {
        Script1 script1 = new Script1();
        script1.OnBoolValueChanged += HandleBoolValueChanged;
    }

    private void HandleBoolValueChanged(bool value)
    {
        // Делаем что-то с полученным значением bool
    }
}

3. Использование класса-контейнера или паттерна проектирования для обмена данными между скриптами. Например, можно создать класс-контейнер с нужными свойствами и передавать экземпляр этого класса между скриптами.
Например:

// Скрипт 1
public class Script1
{
    private Container container;

    public Script1(Container container)
    {
        this.container = container;
    }

    private void SomeMethod()
    {
        bool myBoolValue = container.MyBoolValue;
        // Делаем что-то с полученным значением bool
    }
}

// Скрипт 2
public class Script2
{
    private void SomeMethod()
    {
        Container container = new Container();
        container.MyBoolValue = true;

        Script1 script1 = new Script1(container);
    }
}

// Класс-контейнер
public class Container
{
    public bool MyBoolValue { get; set; }
}

Все эти методы и концепции позволяют обмениваться данными между скриптами без использования static переменных. Выбор конкретного метода зависит от контекста вашего приложения и требований к архитектуре.