Unity의 코루틴에서 값 반환
Unity를 사용한 게임 개발에서 코루틴은 일반적으로 HTTP 요청 전송과 같은 비동기 작업을 수행하는 데 사용됩니다. . 그러나 코루틴이 완료된 후 결과를 검색하는 것은 어려울 수 있습니다.
코루틴을 사용하여 POST 요청을 실행하고 변수 Success_fail을 업데이트하는 다음 코드 조각을 고려해 보세요.
public int POST(string username, string passw) { WWWForm form = new WWWForm(); form.AddField("usr", username); form.AddField("pass", passw); WWW www = new WWW(url, form); StartCoroutine(WaitForRequest(www)); //problem is here ! return success_fail; }
여기서 문제는 코루틴이 완료되기 전에 return 문이 실행되어 잘못된 값이 반환된다는 것입니다. 이 문제를 해결하기 위해 다음 접근 방식을 사용할 수 있습니다.
액션 사용
함수에서 직접 값을 반환하는 대신 Action
public void POST(string username, string passw, Action<int> callback) { WWWForm form = new WWWForm(); form.AddField("usr", username); form.AddField("pass", passw); WWW www = new WWW(url, form); StartCoroutine(WaitForRequest(www, callback)); }
코루틴에서는 Success_fail 변수를 설정하고 해당 값으로 콜백을 호출합니다.
private IEnumerator WaitForRequest(WWW www, Action<int> callback) { yield return www; if (www.error == null) { if(www.text.Contains("user exists")) { success_fail = 2; } else { success_fail=1; } } else { success_fail=0; } callback(success_fail); }
모든 스크립트에서 POST 함수를 호출할 수 있습니다. 그리고 결과를 처리하기 위한 콜백을 제공합니다.
this.POST("user1", "password", (result) => { print("Result: " + result); });
이 접근 방식을 사용하면 코루틴에서 값을 검색할 수 있습니다. 함수가 이미 반환되었더라도 완료되었습니다.
위 내용은 Unity 코루틴에서 값을 올바르게 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!