Skip to content
This repository has been archived by the owner on Apr 23, 2020. It is now read-only.

KuraiAndras/MainThreadDispatcher.Unity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notice

This project moved to a mono repo.

MainThreadDispatcher.Unity

openupm

An implementation of the IMainThreadDispatcher interface in Unity 3D

Usage

Add a GameObject to you scene and add the UnityMainThreadDispatcher script to it. Make sure that this GameObject is in your scene.

//Getting an instance with static method
IMainThreadDispatcher dispatcher = UnityMainThreadDispatcherExtensions.Instance;

dispatcher.Invoke(() => Debug.Log("Hello 1"));
await dispatcher.InvokeAsync(() => Debug.Log("Hello 2"))

Button button = await dispatcher.InvokeAsync(() => GameObject.FindObjectOfType<Button>()))    

Calling the dispatcher is thread safe

Gotchas

If you call UnityMainThreadDispatcherExtensions.Instance before the the GameObject containing it is instantiated you will get an exception.

If you call UnityMainThreadDispatcherExtensions.Instance for the first time from a thread other than the main unity thread, you will get an exception.

If there are multiple instances in you scene, then when calling UnityMainThreadDispatcherExtensions.Instance it will cache the first it finds. Preferably you only want one instance of it in your application, having multiple does not provide any performance benefit

About

Main thread dispatcher implementation for unity

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages