почему он не передает переменную Bool другому классу? - PullRequest
1 голос
/ 25 апреля 2019

Я хочу открыть дверь, когда игрок ходит по триггерному переключателю, поэтому я создал 2 сценария и установил свою переменную Bool для другого класса, но она не работает, вот мой Код на первом классе:

internal bool openDoor=false;
private void OnTriggerEnter2D(Collider2D door)
{   
    if (openDoor==true && door.gameObject.tag == "Player")
    {
        StartCoroutine(fading());
    }
}

и это мой второй класс, который установил openDoor в "true":

private void OnTriggerEnter2D(Collider2D doorTrigger)
{
    if (doorTrigger.gameObject.tag == "Player")
    {
        LoadLevel03 l3 = new LoadLevel03();
        l3.openDoor = true;
    }
}

и когда я вернусь к двери, она не откроется, хотя я установил для Bool значение true.

1 Ответ

3 голосов
/ 25 апреля 2019

Вы создаете новый экземпляр LoadLevel03, устанавливаете для его поля openDoor значение true, а затем выбрасываете его снова.

Вам нужно овладеть уже существующим LoadLevel03 объектом на вашем уровне.

РЕДАКТИРОВАТЬ: Как это:

private void OnTriggerEnter2D(Collider2D doorTrigger)
{
    if (doorTrigger.gameObject.tag == "Player")
    {
        //find the existing level 3 object and allow it to open
        LoadLevel03 l3 = GameObject.Find("Level3Door");
        l3.openDoor = true;
    }
}

Очевидно, это зависит от того, что вы указали для объекта уровня 3 имя «Level3Door»

пс. openDoor уже является логическим значением, поэтому нет необходимости в сравнении в вашем первом методе: т.е.

if (openDoor && door.gameObject.tag == "Player")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...