using UnityEngine; using System.Collections.Concurrent; using System; public class UnityMainThreadDispatcher : MonoBehaviour { private static readonly ConcurrentQueue ExecutionQueue = new ConcurrentQueue(); public static void Enqueue(Action action) { ExecutionQueue.Enqueue(action); } void Update() { while (ExecutionQueue.TryDequeue(out var action)) { action.Invoke(); } } }