Вы не можете изменять объекты Unity вне основного потока. Поэтому, если вашей задаче нужно изменить объект Unity, вам нужно будет извлечь SynchronizationContext из основного потока и использовать его для публикации или отправки работы обратно в основной поток для изменений и ссылок на объект фактически единства.
// make sure you are on the main thread when you call this next line.
SynchronizationContext mainThreadSyncContext = SynchronizationContext.Current;
Task.Run(() => {
// do heavy work
// then when you want to modify a unity object or referenc them, you have to delegate the work to run
// on the main thread.
mainThreadSyncContext.Post(_ => {
// async so it does not block and the work will be executed at some point (most likely the next tick)
// safely reference Unity objects and functions
}, null);
mainThreadSyncContext.Send(_ => {
// synchronous so it will send the the main thread and wait for a return before continuing
// safely reference Unity objects and functions
}, null);
});