Но, наберите API с веб -асинхронным, и для получения значения из Интернета мне нужно использовать функцию вызовов.
Код: Выделить всё
APIController.WebAppStorageGet(key, callback);
< /code>
Например < /p>
APIController.WebAppStorageGet(key, (value) => { Debug.Log( value);});
< /code>
Другой пример, как работают функции < /p>
// save data
APIController.WebAppStorageSet("score", 5);
// get data
APIController.WebAppStorageGet("score", (value) => { Debug.Log( value);});
Как я могу создать класс и функцию:
Код: Выделить всё
m_Score = myPlayerPrefs.GetInt("score", 0);
< /code>
на основе функции < /p>
APIController.WebAppStorageGet(key, callback);
< /code>
Если мне это нравится, получить 0: < /p>
public static async Task GetInt(string key, int fallback = 0)
{
int intvalue = fallback;
APIControler.WebAppStorageGet(key, (strvalue) => {
intvalue = int.Parse(strvalue);
});
return intvalue;
}
< /code>
К сожалению, когда я реализую код в соответствии с советом Derhugo, Unity полностью замораживает ((< /p>
public static async Task GetInt(string key, int fallback = 0)
{
var completionSource = new TaskCompletionSource();
try
{
APIControler.WebAppStorageGet(key, (strvalue) =>
{
var value = int.Parse(strvalue);
completionSource.SetResult(value);
});
}
catch
{
completionSource.SetResult(fallback);
}
return await completionSource.Task;
}
// call like this
int result = GetInt("spend").Result;
Подробнее здесь: https://stackoverflow.com/questions/794 ... function-r