Всякий раз, когда я присоединяю отладчик к редактору Unity, редактор просто останавливается, как только я нажимаю кнопку запуска.
При получении пакета с моего сервера я пытаюсь запустить асинхронную задачу, которая вызывает статический метод на моем «экранном» скрипте, который реализует MonoBehavior
public override async Task RunImpl()
{
LoginScreen.UpdateSrvText();
}
LoginScreen выглядит следующим образом
public class LoginScreen : MonoBehaviour
{
private static LoginScreen instance = null;
public TextMeshProUGUI ServerResponseText;
private NetworkClient Client;
private static List<System.Action> actionQueuesUpdateFunc = new List<Action>();
private volatile static bool noActionQueueToExecuteUpdateFunc = true;
List<System.Action> actionCopiedQueueUpdateFunc = new List<System.Action>();
void Awake()
{
instance = this;
DontDestroyOnLoad(gameObject);
}
void Start()
{
Client = GlobalControl.Instance.NetworkingClient = new NetworkClient();
}
void Update()
{
ProcessUpdateQueue();
}
public static void UpdateSrvText()
{
instance.UpdateSrc();
}
public void UpdateSrc()
{
ExecuteInUpdate(() =>
{
ServerResponseText.text = GlobalControl.Instance.LoginScreenServerText;
});
}
public static void ExecuteInUpdate(System.Action action)
{
if (action == null)
{
throw new ArgumentNullException("action");
}
lock (actionQueuesUpdateFunc)
{
actionQueuesUpdateFunc.Add(action);
noActionQueueToExecuteUpdateFunc = false;
}
}
private void ProcessUpdateQueue()
{
if (noActionQueueToExecuteUpdateFunc)
{
return;
}
actionCopiedQueueUpdateFunc.Clear();
lock (actionQueuesUpdateFunc)
{
actionCopiedQueueUpdateFunc.AddRange(actionQueuesUpdateFunc);
actionQueuesUpdateFunc.Clear();
noActionQueueToExecuteUpdateFunc = true;
}
for (int i = 0; i < actionCopiedQueueUpdateFunc.Count; i++)
{
actionCopiedQueueUpdateFunc[i].Invoke();
}
}
}
Я пытался подключить отладчик после запуска приложения, но затем Visual Studio зависает и редактор. Я пытаюсь повторно использовать код, который я нашел в одном из наиболее популярных здесь вопросов о внедрении простой очереди в основной поток, и он работает, за исключением отладчика.