MessagePipe / UniRx.MessageBroker / Zenject Signals の Pub/Sub Messaging で HelloWorld
Pub / Sub Messaging
Publish Subscribe Messaging Model (Pattern) というのがあります.以下を読めばよいかと.
itdoc.hitachi.co.jp ja.wikipedia.org
Unity で Pub / Sub を利用したい場合は,以下があります.
- MessagePipe
- UniRx.MessageBroker
- Zenject.Signals
- UniTaskPubSub
今回は MessagePipe / Zenject.Signals / UniRx.MessageBroker のハロワサンプルを作りました.
GitHub Repository
リポジトリ公開しておきます.
ほぼ似通った記法にするようにしていることもあり,MessageBroker は Default の方を利用してたりしてます.
Publish
MessagePipe
IPublisher<StartSignal> _startPublisher;
_startPublisher.Publish(new StartSignal(){UserName = _inputField.text})
Zenject.Signals
SignalBus _signalBus;
_signalBus.Fire(new StartSignal {UserName = _inputField.text})
UniRx.MessageBroker
UniRx.MessageBroker.Default.Publish(new StartSignal(){UserName = _inputField.text})
Subscribe
MessagePipe
readonly ISubscriber<StartSignal> _startSubscriber;
_startSubscriber.Subscribe(SayHello)
.AddTo(_disposable);
Zenject.Signals
readonly SignalBus _signalBus; _signalBus.Subscribe<StartSignal>(SayHello); // UniRx統合作業を行ってないのでUnsubscribeで購読解除処理をしている _signalBus.Unsubscribe<StartSignal>(SayHello);
MessageBroker
UniRx.MessageBroker.Default.Receive<StartSignal>() .Subscribe(SayHello) .AddTo(_disposable);
References
MessagePipe – .NET と Unityのためのハイパフォーマンスメッセージングライブラリ | Cygames Engineers' Blog
Zenject/Signals.md at master · modesttree/Zenject · GitHub