Как сформировать асинхронную функцию с обратным вызовом сделать синхронную функцию, возвращающую переменную в UnityC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как сформировать асинхронную функцию с обратным вызовом сделать синхронную функцию, возвращающую переменную в Unity

Сообщение Anonymous »

Казалось бы, это простой вопрос, но я не могу найти ответ на него. Существует API и функции для сохранения в Интернете. Я хочу создать функцию с аналогичным синтаксисом, например, myPlayerPrefs.setint и myPlayerPrefs.getint .
Но, наберите 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);});
Результат на консоли будет 5
Как я могу создать класс и функцию:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Правильное приведение к указателю функции, указывающему на функцию, возвращающую функцию.
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как получить исходную таблицу данных, если я инициализирую фильтр в тире? (проблема с обратным вызовом)
    Anonymous » » в форуме Python
    0 Ответы
    119 Просмотры
    Последнее сообщение Anonymous
  • Call_user_func_array(): аргумент №1 ($callback) должен быть допустимым обратным вызовом [дубликат]
    Anonymous » » в форуме Php
    0 Ответы
    121 Просмотры
    Последнее сообщение Anonymous
  • SwiftUI с обратным вызовом завершения анимации
    Гость » » в форуме IOS
    0 Ответы
    44 Просмотры
    Последнее сообщение Гость
  • SwiftUI с обратным вызовом завершения анимации
    Anonymous » » в форуме IOS
    0 Ответы
    61 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»