Unity llama al método del hilo principal en un hilo secundario

En Unity, se puede llamar al método del subproceso principal en un subproceso secundario utilizando la cola de tareas del subproceso principal proporcionada por Unity. Esto se puede lograr siguiendo estos pasos:

1. Defina un tipo de delegado y declare los métodos que deben ejecutarse en el hilo principal.

public delegate void MainThreadAction();

2. Cree una cola de tareas del subproceso principal, ejecútela en el subproceso principal y almacene los métodos que deben ejecutarse en el subproceso principal.

public static class MainThreadTaskQueue
{
    
    
    private static readonly Queue<MainThreadAction> tasks = new Queue<MainThreadAction>();
    private static readonly object queueLock = new object();

    public static void EnqueueTask(MainThreadAction action)
    {
    
    
        lock (queueLock)
        {
    
    
            tasks.Enqueue(action);
        }
    }

    public static void ExecuteTasks()
    {
    
    
        lock (queueLock)
        {
    
    
            while (tasks.Count > 0)
            {
    
    
                var task = tasks.Dequeue();
                task?.Invoke();
            }
        }
    }
}

3. Utilice la cola de tareas del hilo principal en el hilo secundario para llamar a los métodos que deben ejecutarse en el hilo principal.

// 示例子线程方法
private void SomeBackgroundThreadMethod()
{
    
    
    // 在子线程中添加任务到主线程任务队列
    MainThreadTaskQueue.EnqueueTask(() =>
    {
    
    
        // 这里是需要在主线程中执行的代码
        MyMethod();
    });
}

// 在主线程 Update 或其他适当的地方执行主线程任务队列中的方法
private void Update()
{
    
    
    MainThreadTaskQueue.ExecuteTasks();
}

Nota : Cabe señalar que, dado que la mayoría de las API de Unity solo se pueden llamar en el hilo principal, cuando se llama entre subprocesos, el código que debe ejecutarse en el hilo principal debe encapsularse en un delegado y pasarse a través del hilo principal. Cola de tareas para programar la ejecución. Además, asegúrese de llamar al método ExecuteTasks de la cola de tareas del subproceso principal en el lugar apropiado del subproceso principal (como el método Update) para ejecutar las tareas en la cola.

Supongo que te gusta

Origin blog.csdn.net/weixin_44446603/article/details/133325125
Recomendado
Clasificación