我正在從服務器獲取玩家名稱,這需要一段時間,我添加了一個函式,該函式應該等待TestName變數被玩家名稱覆寫
StartTask()通過另一個函式呼叫,但不等到TestName != "NoName"
private string TestName = "NoName";
?
void OnLeaderboardGet(GetLeaderboardResult result)
{
foreach (var item in result.Leaderboard)
{
TestName = "NoName";
GetPlayerProfile(item.PlayFabId); //This function gets the player's nickname, but with a delay of a few seconds
StartCoroutine(StartTask());
Leaders = (TestName "\n");
}
Debug.Log(Leaders);
}
IEnumerator StartTask()
{
Debug.Log("Start");
yield return new WaitUntil(CheckName);
Debug.Log("Finish");
}
bool CheckName(){
if (TestName == "NoName")
{
return false;
}
else
{
return true;
}
}
uj5u.com熱心網友回復:
您沒有發布服務器請求代碼,但它也應該是異步操作,并且應該能夠以這種方式作業。
您的新 yield 陳述句也可能是另一個異步操作。這應該可以解決您的問題,以防萬一GetPlayerProfile
//you can ignore that with lambda like = result => StartCoroutine(OnLeaderboardGetCoroutine(result));
void OnLeaderboardGet(GetLeaderboardResult result)
{
StartCoroutine(OnLeaderboardGetCoroutine(result));
}
IEnumerator OnLeaderboardGetCoroutine(GetLeaderboardResult result)
{
foreach (var item in result.Leaderboard)
{
TestName = "NoName";
yield return GetPlayerProfile(item.PlayFabId); //This function gets the player's nickname, but with a delay of a few seconds
//StartCoroutine(StartTask());
Leaders = (TestName "\n");
}
Debug.Log(Leaders);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525586.html
標籤:C#unity3d
下一篇:更改Unity中手部跟蹤的增益
