@dark_spectator

Callback Unity?

Есть корутина в C#, Хочу передать ей в качестве аргумента метод который должна обрабатывать её ответ, как это можно сделать? Корутина вызывается из другого файла.

Результат выполнения метода Callback, должен заноситься в переменную.

namespace Assets.Scripts.Core
{

    public delegate string Callback(string data);
    
    // ReSharper disable once UnusedMember.Global
    [SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
    public class NetworkService : MonoBehaviour
    {
        [Header("Statements")]
        public static bool authorize = false;
        
        [Header("API data")]
        [SerializeField] private string userToken;       
        [SerializeField] private const string appKey = "";

        

        
        private void Start()
        {
            if (PlayerPrefs.HasKey("UserToken"))
            {
                authorize = true;
                userToken = PlayerPrefs.GetString("UserToken");
            }
        }

        public IEnumerator SetStatusOnline(Func<string, string> Callback) 
        {
            var uri = "https://vk.com";
            var query = new WWW(uri);
            yield return query;
            Callback(query.text);

        }
        
    }


}
  • Вопрос задан
  • 988 просмотров
Решения вопроса 1
MrMureno
@MrMureno Куратор тега Unity
VR for all
а что у вас в текущем варианте не так?
ну кроме того, что вы не показали как пробуете вызвать корутину)

публичный Энемуратор есть.
Ссылку на класс с ним уж как нибудь получите))

вызывайте. передавайте свою функцию...(ну или можете передать туда просто именно метод
public IEnumerator SetStatusOnline(Action onDone)
{
....
///проверить только что Action не null
onDone?.Invoke();
....
}

что именно не устраивает то??
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы