Я внедрил System.Collections.Queue
в своей игре, чтобы собрать все входящие TCP-сообщения.Как обрабатывать очередь в Unity3D?
На данный момент я просто обработать старое сообщение в Queue
в Update()
(если очередь не пуста)
Однако время между двумя кадрами часто путь дольше, что время, необходимое для обработки сообщения.
Я хотел бы знать, есть ли способ обработать сообщение, только когда предыдущий закончен, без замораживания игры.
Я пробовал с сопрограммами, но ничего не изменил с тех пор, как yield return null;
, похоже, ждет следующего кадра (так что это похоже на Update()).
без размещения вашего TCP сотрудничества Это было бы трудно сказать, что вы делаете неправильно. – Programmer
Сообщения - это просто информация, которая может появиться в любое время. Иногда это может быть более сотни сообщений за одну секунду, а Unity нужно обрабатывать их один за другим. Но я не могу позволить себе ждать 1/60s между каждым –
Используйте какой-то поток для обработки сообщений в фоновом режиме или используйте методы async, предоставляемые классом TCP, вместо их очереди. – null