using UnityEngine; using System.Collections; using System.Collections.Generic; using System; namespace Amanotes.TripleSDK.Core { [InjectService(Order = -10000)] public class DoOnMainThread : MonoBehaviour { private static readonly Queue tasks = new Queue(); void Start() { DontDestroyOnLoad(this.gameObject); } public void Initial(){ } void Update() { this.HandleTasks(); } void HandleTasks() { while (tasks.Count > 0) { Action task = null; lock (tasks) { if (tasks.Count > 0) { task = tasks.Dequeue(); } } task(); } } public void QueueOnMainThread(Action task) { lock (tasks) { tasks.Enqueue(task); } } } }