обязательно прочтите еще один вопрос, который я спросил, какие ключевые вопросы поднимаются:
В частности, в Unity, «куда» буквально возвращается ожидание?
Для экспертов C# Unity является однопоточным1
Вычисления обычно выполняются и тому подобное в другом потоке.
Когда вы делаете что-то в другом потоке, вы часто используете async/wait, поскольку все хорошие программисты C# говорят, что это простой способ сделай это!
Код: Выделить всё
void TankExplodes() {
ShowExplosion(); .. ordinary Unity thread
SoundEffects(); .. ordinary Unity thread
SendExplosionInfo(); .. it goes to another thread. let's use 'async/wait'
}
using System.Net.WebSockets;
async void SendExplosionInfo() {
cws = new ClientWebSocket();
try {
await cws.ConnectAsync(u, CancellationToken.None);
...
Scene.NewsFromServer("done!"); // class function to go back to main tread
}
catch (Exception e) { ... }
}
Все работает отлично.
Все работает отлично.
p>
Как отстойный программист Unity, который знает C# лишь настолько, чтобы дойти до конца дня, я всегда предполагал, что приведенный выше шаблон async/await буквально запускает другой поток.
Фактически, приведенный выше код буквально запускает другой поток или это делает C#/ .Net использует какой-то другой подход для решения задач, когда вы используете аккуратный шаблон async/wait?
Может быть, он работает иначе или конкретно в движке Unity, чем «использование C # в целом» ? (IDK?)
Обратите внимание, что в Unity то, является ли это потоком или нет, существенно влияет на то, как вам придется обрабатывать следующие шаги. Отсюда и вопрос.
Проблема: Я понимаю, что существует много дискуссий по поводу «ожидается». ветка", но (1) я никогда не видел, чтобы это обсуждалось/ответилось в настройках Unity (есть ли какая-то разница? ИДК?) (2) я просто никогда не видел четкого ответа!
1 Некоторые вспомогательные расчеты (например, физические и т. д.) выполняются на другие потоки, но фактический «игровой движок на основе фреймов» представляет собой один чистый поток. (Невозможно каким-либо образом «получить доступ» к основному потоку фрейма движка: при программировании, скажем, собственного плагина или некоторых вычислений в другом потоке вы просто оставляете маркеры и значения для компонентов в потоке фрейма движка, чтобы их можно было просмотреть и использовать при запуске каждого кадра.)
Подробнее здесь: https://stackoverflow.com/questions/554 ... her-thread
Мобильная версия