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

リポジトリ公開しておきます.

github.com

ほぼ似通った記法にするようにしていることもあり,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

UniRxのMessageBrokerが便利という話 - Qiita

Zenject Signals - imog