UniRx多线程
Siki:Unity中一般使用Thread.Start开启一个线程。当逻辑非常复杂的时候多线程非常难以管理。使用UniRx使多线程更简单。
void Start()
{
var threadAStream = Observable.Start(() =>
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
return 10;
});
void threadBStream = Observable.Start() =>
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));
return 10;
});
Observable.WhenAll(threadAStream,threadBStream)
.ObserveOnMainThread()
.Subscribe(xs =>
{
Debug.Log(xs[0] + ":" + xs[1]);
});
}
Siki:可以使用
Observable.Start
这个API开启一个线程流。
Siki:ObserveOnMainThread
意思是把WhellAll结果转到主线程上。这样Subscribe⾥ 的回调就可以使⽤Unity的API了(Unity的很多API不可以在其他线程中使⽤)。
(END)