Unity의 코루틴 실행 및 값 검색
Unity 게임에서는 딜레마에 직면합니다. 변수의 값을 반환해야 합니다. 코루틴(WaitForRequest) 실행이 완료된 후에만 가능합니다. 그러나 POST 메서드의 return 문은 코루틴이 완료되기 전에 실행되어 잘못된 반환 값이 발생합니다.
코루틴 이해
Unity의 코루틴은 일시 중지된 함수로, 시간이 지나면 일시중지되었다가 재개됩니다. 이를 통해 메인 스레드를 차단하지 않고 비동기 작업을 수행할 수 있습니다. 코루틴 WaitForRequest는 HTTP 응답을 기반으로 Success_fail 변수를 업데이트하는 역할을 담당합니다.
문제
이 문제는 POST에서 return 문을 즉시 실행할 때 발생합니다. 방법. 이는 코루틴이 Success_fail 변수를 업데이트하기 전에 발생하여 성급하고 잘못된 반환 값이 발생합니다.
액션을 사용한 솔루션
이를 극복하려면 int 유형의 변수를 허용하는 매개변수 없는 함수인 Action 대리자를 활용할 수 있습니다. Action을 WaitForRequest 코루틴에 매개변수로 전달하면 코루틴이 완료될 때 호출될 콜백 함수를 지정할 수 있습니다.
Action에서 제공하는 콜백 함수는 업데이트된 Success_fail 값을 수신하고 다음 작업을 수행할 수 있습니다. 이를 사용하여 추가 작업을 수행하거나 필요에 따라 값을 반환합니다.
예 코드
다음은 작업 사용을 보여주는 업데이트된 버전의 코드입니다.
public int POST(string username, string passw) { WWWWWForm form = new WWWForm(); form.AddField("usr", username); form.AddField("pass", passw); WWW www = new WWW(url, form); StartCoroutine(WaitForRequest(www, (status) => { success_fail = status; // Perform other actions or return the value as needed })); // This line is no longer returning a value // as the success_fail variable is being modified asynchronously } private IEnumerator WaitForRequest(WWW www, Action<int> callback) { yield return www; if (www.error == null) { if (www.text.Contains("user exists")) { callback(2); } else { callback(1); } } else { callback(0); } }
이 코드에서 POST 메서드는 더 이상 값을 직접 반환하지 않습니다. 대신 Action 대리자를 매개변수로 전달하여 WaitForRequest 코루틴을 시작합니다. 코루틴이 완료되면 작업이 호출되어 업데이트된 Success_fail 변수에 액세스하고 활용할 수 있습니다.
위 내용은 Unity 코루틴이 완료된 후 어떻게 값을 반환할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!