2012-03-24 5 views
3

私はUnity3dでマルチスレッドスクリプトの実行を実装しようとしていましたが、Unityライブラリによって提供される方法はなく、Monoによって提供されるSystem.Threadingを使用する必要があります。しかし、彼らはUnity Scriptingはスレッドセーフではないと言いました。Unity3dでのマルチスレッドスクリプトの呼び出し

System.threadingやその他のプラットフォームに依存しないAPIを使用して、Unity3Dでマルチスレッドを安全かつ効率的に実装できますか? また、スクリプトが並行して実行されていることを確認する方法はありますか?

例またはリンクは高く評価されます。私は、iOSアプリケーションのためのスレッドに必要な

よろしく

+0

私はコルーチンをほとんど使用せず、いつも他の言語のスレッドのように思っていました。私は自分の答えを削除したので、他の人から回答を得る可能性が高くなります。 – Kay

+0

右のコルーチンは、スレッディングと全く接続していません。 – Fattie

答えて

5

は、残念ながら私はユニティで、このような操作を行うための方法を発見したことはありません。しかし、スレッドを使用するプラグインを書くことができます。私のアプリケーションでは、音楽アプリケーションのタイミングを取るためのスレッディングが必要でしたので、xcodeでコアオーディオを使用するオーディオプラグインライブラリを作成しました。そこに必要なスレッドをすべて実行できます。しかし、Unityとプラグインの間の同期を管理するのはかなり苦しいです。

+0

はい、私はそれのためのプラグインを書く必要があるかもしれないと思います:Sしかし、プラットフォームに依存しないようにするには、私はそれがすべてのプラットフォームで安定しているようにいくつかのプロセスで完了させる必要があります。 – Orochi

1

一般に、マルチスレッドは自由に使用できます。しかし重要な警告が1つあります:Unity APIへのすべての呼び出しは、メインスレッドから行われなければなりません。したがって、AI、パス検索、その他のスレッドに自由にご利用ください。最後に、計算結果をメインスレッドに返信する必要があります。

Unityはスレッドの代わりに便利なものもあります:coroutines。それらを使用すると、関数をフラグメント(yieldとresume)で実行することができ、すべてがメインスレッドから実行されるため、Unity APIを利用できます。しかし、それらは重い計算には適していないことに注意してください。

関連する問題