Мне нужно выполнить некоторую работу по инициализации в Update()
.
Эта работа по инициализации занимает некоторое время, и я не могу продолжить работу с обычным кодом в Update()
, пока эта инициализация не закончится.
Кроме того, для этой инициализации требуется некоторое WaitForSeconds()
.
Поэтому я попробовал следующее:
private bool _bInitialized = false;
private bool _bStarted = false;
void Update()
{
if (!_bInitialized)
{
if (!_bStarted)
{
_bStarted = true;
StartCoroutine(pInitialize());
}
return;
}
(...) do stuff that can only be done after initialization has been completed
}
Однако, похоже, я не могу изменить переменную_bInitialized
в пределах IEnumerator
.
_bInitialized
никогда не становится true
:
private IEnumerator pInitialize()
{
WiimoteManager.Cleanup(_wii);
yield return new WaitForSeconds(2);
_wii = WiimoteManager.Wiimotes[0];
yield return new WaitForSeconds(2);
_wii.SetupIRCamera(IRDataType.BASIC);
yield return new WaitForSeconds(2);
_bInitialized = true; //this doesn't seem to work
yield return 0;
}
Может кто-нибудь сказать мне, как это сделать правильно?
Большое спасибо!