IEnumerator startLogics() { while (true) { switch (curState) { case WAIT_USER_INPUT: while (!touchScreenKeyboard.done) { yield return(null); } //yield return new WaitForSeconds(2.0f); messageToSend = ist.getText(); ist.clearText(); lastState = curState; curState = WAIT_SERVER_RESPONSE; break; case WAIT_SERVER_RESPONSE: WWWForm form = new WWWForm(); form.AddField("message", messageToSend); UnityWebRequest www = UnityWebRequest.Post(postUrl, form); yield return(www.Send()); if (www.isError) { Debug.Log("Post error!"); lastState = curState; curState = ERROR; } else { messageFromServer = www.downloadHandler.text; Debug.Log("Receive Server Text: " + messageFromServer); lastState = curState; curState = TALKING; } break; case TALKING: Debug.Log("Talking about message: " + messageFromServer); yield return(new WaitForSeconds(5.0f)); lastState = curState; curState = WAIT_USER_INPUT; break; case ERROR: yield return(new WaitForSeconds(10.0f)); Debug.Log("Error occurs!"); lastState = curState; curState = ERROR; break; } } }