你不能简单地在一个普通函数中等待协程的结果,除非你想通过使用while循环或类似的方法将游戏冻结,直到你的答案在那里。
我可以建议您采用以下策略:使用回调。回调是在当前函数/协同例程完成工作时将调用的函数。在您收到
WWW
requestNowTime
WWW www;
// Call this function to start the computing process
public void ProcessElapsedSeconds(Action functionToCallWhenDone)
{
StartCoroutine(requestNowTime(functionToCallWhenDone));
}
public IEnumerator requestNowTime(Action callback)
{
www = new WWW(url);
OnTimeReceived(www, functionToCallWhenDone);
}
void OnTimeReceived(WWW www, Action functionToCallWhenDone)
{
int totalSeconds = 0;
DateTime dt = Convert.ToDateTime(www.text);
TimeSpan compareTime = dt - Convert.ToDateTime(getTime());
totalSeconds = (int)compareTime.TotalSeconds;
functionToCallWhenDone(totalSeconds);
}