Hey all,
So I ran into a problem this week where Unity did not allow for a simple way of executing UI functions from different threads. This is quite annoying, especially if you’re working with certain multithreaded networking libraries that dispatch event handlers to different threads.
I made a quick fix for it that is easy to use and noob-friendly. It uses coroutines that are queued and executed on the main thread through a game object that is added to the scene.
You can use it like this:
public IEnumerator ThisWillBeExecutedOnTheMainThread() {
Debug.Log (“This is executed from the main thread”);
yield return null;
}
You can now just call this from anywhere:
UnityMainThreadDispatcher.Instance().Enqueue(ThisWillBeExecutedOnTheMainThread());
Simply head over to https://github.com/PimDeWitte/UnityMainThreadDispatcher and start using it if you’d like.