Обсудим Проблема с коллбеком

olol321

Нестандартное звание
5 (100%)
22 Июн 2023
516
3
106
193
23
Всем привет, есть вопросик который не относится ни к плагинам, ни к серверу
В общем проблема такая, тут мы отправляем команду и подписываем коллбеком UpdateServerInfo()
C#:
rconManager.Client.SendCommand(new GetServerInfo((info) => {
                    UpdateServerInfo(info);
                }));
вариант 1 (рабочий):
C#:
private void UpdateServerInfo(RustRcon.Types.Response.ServerInfo info)
    {
        print(info.Hostname);
    }
output: ServerName

Вариант 2 (не рабочий)
Код:
private void UpdateServerInfo(RustRcon.Types.Response.ServerInfo info)
    {
        print(info.Hostname);
        hostName_Text.text = info.Hostname;
    }
output (запятая - новый лог): ServerName, Null
каким то волшебным образом просто выполняется print 2 раза, а дальше код не идет, и после этого соединение rcon с сервером закрывается (тоже непонятно почему)
ни ошибок, ничего.

если сделать к примеру 2 print то все будет нормально (выведет 2 раза ServerName)
В общем помогите подскажите что я не так делаю, или это не май бед?
 
Эксперементы от галилео:
C#:
    private void UpdateServerInfo(RustRcon.Types.Response.ServerInfo info)
    {
        print(info.Hostname);
        print("Test - 1");
        hostName_Text.text = info.Hostname;
        print("Test - 2");
    }
1694078407690.png
 
проблему решил, проблема в том что нельзя взаимодействовать с разными приколюхами от юнити в другом потоке, только в мейн потоке
 
может кому когда нибудь пригодится решение

C#:
private static readonly ConcurrentStack<Action> actions = new();
 
    private void Update()
    {
        if (actions.TryPop(out var action))
        {
            action?.Invoke();
 
            actions.Clear();
        }
    }
    private void Start()
    {
        Client.OnConsoleMessage += (data) =>
        {
            actions.Push(() => ConsoleLog(data));
        };
    }
 
Активность
Пока никто не печатает сообщение

Похожие темы