AleksND Ответов: 1

Как я могу изменить глобальную переменную из ienumerator


Я использую IEnumerator для изменения нескольких логических значений, например (заморожено, чтобы быть ложным)


public void ChangeStatus(ref bool status)
 {
 
     if(status == true)
     {
         TimeDelay(status);
 
     }
 }
 
 public IEnumerator TimeDelay(bool status)
 {
     yield return new WaitForSeconds(ResistanceLevel);
 
     status = false;
 
 }


Я не могу передать аргумент с помощью REF в IEnumerator, поэтому моя программа не работает.

Любые решения спасибо вам.

Unity2d,C#

Что я уже пробовал:

Я пробовал thread.sleep, но это останавливает всю игру.

Dave Kreskowiak

Недостаточно информации. Вам придется предоставить гораздо больше подробностей о том, что вы делаете, и соответствующий код, который у вас есть за этим.

1 Ответов

Рейтинг:
0

OriginalGriff

status это не "глобальная переменная" (в C# таких вещей нет по дизайну, хотя static переменные действительно позволяют вам аппроксимировать их) - это локальная переменная параметра, и она доступна только внутри ChangeStatus метод, его расположение в памяти не является фиксированным и будет меняться во время работы приложения, потому что он помещается в стек непосредственно перед вызовом метода.

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