Maison >développement back-end >C++ >Comment appeler en toute sécurité les fonctions de l'API Unity à partir de threads non principaux?
Utilisez une API Unity à partir d'autres threads ou des fonctions d'appel dans le thread principal
Solution
Appelez l'unité APIImplémentez les étapes suivantes:
Créez un statiqueappelé
pour stocker l'opération qui doit être effectuée dans le thread principal.actionQueuesUpdateFunc
) et effectuer ces opérations. List<Action>
actionQueuesUpdateFunc
actionCopiedQueueUpdateFunc
noActionQueueToExecuteUpdateFunc
Update
La fonction pour appeler la fonction à partir d'un thread séparé: ou, passez la fonction comme un paramètre:
Corporation opérationnelle dans le thread principal
<code class="language-csharp">UnityThread.executeInUpdate(() => { // 在主线程中执行的代码 });</code>pour la coroutine:
comment utiliser
<code class="language-csharp">Action rot = Rotate; UnityThread.executeInUpdate(rot); void Rotate() { // 函数代码 }</code>
Initialiser dans :
<code class="language-csharp">UnityThread.executeCoroutine(myCoroutine()); IEnumerator myCoroutine() { // 协程代码 }</code>Exécutez le code dans :
Awake()
Effectuer dans : UnityThread
<code class="language-csharp">UnityThread.initUnityThread();</code>
Update
<code class="language-csharp">UnityThread.executeInUpdate(() => { // Update 代码 });</code>Exécutez le code dans :
Update
<code class="language-csharp">Action rot = Rotate; UnityThread.executeInUpdate(rot); void Rotate() { // 方法代码 }</code>
LateUpdate
Description supplémentaire
<code class="language-csharp">UnityThread.executeInLateUpdate(() => { // LateUpdate 代码 });</code>et
FixedUpdate
Cette solution utilise une seule instance <code class="language-csharp">UnityThread.executeInFixedUpdate(() => { // FixedUpdate 代码 });</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!