2015-06-21 6 views
1

У меня есть метод, который показывает окно, а затем возвращает значение кнопки, нажатой. Я сделал то, что, когда я нажимаю кнопку, я меняю переменную, и тогда переменная будет возвращена. Мне нужно как-то приостановить метод до тех пор, пока переменная не будет изменена.Подождите, пока переменная изменится

Я программирую игру в единстве, и она использует моно.

Код:

public virtual Buttons Execute(){ 

     this.holder.SetActive(true); //Set the window active 

     // Here wait for the user to click a button 

     return clicked;//Returns the button clicked. 
    } 
+0

Непонятно, что вы имеете в виду. Когда вы устанавливаете значение переменной, оно немедленно изменяется. Что вам нужно подождать? Можете ли вы показать код, который реплицирует проблему и объясняет, что не работает? – David

+0

Возможно, вам стоит взглянуть на http://stackoverflow.com/questions/14189995/create-an-event-to-watch-for-a-change-of-variable –

+0

@ Давида проблема в том, что мне нужно знать как вы переопределяете метод до тех пор, пока переменная не изменится, поскольку я не знаю, будет ли это секунд или минут до тех пор, пока это не произойдет. – Olof

ответ

0

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

Это возможный создать метод, который работает именно так, но вы должны создать свой собственный сообщение насос, который работает во время ожидания:

public virtual Buttons Execute(){ 

    this.holder.SetActive(true); // Set the window active 

    clicked = null; // Set the state as undetermined 

    while (clicked == null) { // Wait until it is set 

     Application.DoEvents(); // Process messages 
     Thread.Sleep(10); // Wait for a while 

    } 

    return clicked; // Returns the button clicked. 
} 

Вы можете прочитать в вопросе Use of Application.DoEvents() для объяснения ловушки использования DoEvents таким образом.

Смежные вопросы