他のスレッドからUnityAPIを使用するか、メインスレッドの関数を呼び出します
unity api
と呼ばれる静的
を作成して、メインスレッドで実行する必要がある操作を保存します。actionQueuesUpdateFunc
をローカルリスト(List<Action>
)にコピーし、これらの操作を実行します。 actionQueuesUpdateFunc
actionCopiedQueueUpdateFunc
noActionQueueToExecuteUpdateFunc
Update
または、パラメーターとして関数を渡します:メインスレッドの の使用方法
初期化
:<code class="language-csharp">UnityThread.executeInUpdate(() => { // 在主线程中执行的代码 });</code>
<code class="language-csharp">Action rot = Rotate; UnityThread.executeInUpdate(rot); void Rotate() { // 函数代码 }</code>
:でコードを実行します
:
<code class="language-csharp">UnityThread.executeCoroutine(myCoroutine()); IEnumerator myCoroutine() { // 协程代码 }</code>で実行します
Awake()
でコードを実行します
UnityThread
<code class="language-csharp">UnityThread.initUnityThread();</code>:
Update
<code class="language-csharp">UnityThread.executeInUpdate(() => { // Update 代码 });</code>
Update
追加の説明
<code class="language-csharp">Action rot = Rotate; UnityThread.executeInUpdate(rot); void Rotate() { // 方法代码 }</code>と
LateUpdate
このソリューションは、すべてのスクリプトに対して単一の<code class="language-csharp">UnityThread.executeInLateUpdate(() => { // LateUpdate 代码 });</code>
以上が非メインスレッドからUnity API関数を安全に呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。