Многопоточный вызов скрипта в Unity3d - PullRequest
3 голосов
/ 24 марта 2012

Я пытался реализовать многопоточное выполнение сценариев в Unity3d, но кажется, что библиотеки Unity не предоставляют никакой возможности, и мы должны использовать System.Threading, предоставляемый Mono. Но они упомянули, что Unity Scripting не является потокобезопасным.

Могу ли я безопасно и эффективно реализовать многопоточность в Unity3D, используя System.threading или другой независимый от платформы API? Кроме того, как я могу убедиться, что сценарии работают параллельно?

Пример или ссылка будут высоко оценены.

Привет

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

Мне нужно было создавать потоки для приложения iOS, к сожалению, я не нашел способа сделать это в Unity.Но вы можете написать плагин, который использует потоки.В моем приложении мне потребовались потоки для синхронизации музыкального приложения, поэтому я написал библиотеку аудио-плагинов, которая использует core-audio в xcode, и вы можете выполнять там все необходимые потоки.Но управлять синхронизацией между Unity и плагином довольно больно.

1 голос
/ 08 мая 2013

Вообще говоря, вы можете свободно использовать многопоточность.Но есть одно важное предостережение: все вызовы Unity API должны выполняться из основного потока.Так что не стесняйтесь использовать темы для ИИ, поиска пути, что угодно.В конце вам нужно будет передать результаты вычислений обратно в основной поток.

Unity предлагает альтернативу потокам, которая иногда полезна: сопрограммы .Они позволяют вам запускать вашу функцию во фрагментах (yield и resume), и все это делается из основного потока, поэтому вы можете использовать Unity API.Обратите внимание, что они не подходят для тяжелых вычислений.

...