using Cysharp.Threading.Tasks; using MessagePipe; using PMaker.MessagePipe; using UniRx; using UnityEngine; namespace PMaker.Example.Message { public class MessagePipeTest : MonoBehaviour { void Start() { MessageKit.GetSubscriber().Subscribe(_ => { Debug.Log(_); }).AddTo(this); MessageKit.GetPublisher().Publish(123); } private void Method2() { var builder = new BuiltinContainerBuilder(); builder.AddMessagePipe() .AddMessageBroker() .AddMessageBroker(); var provider = builder.BuildServiceProvider(); //GlobalMessagePipe.pro GlobalMessagePipe.SetProvider(provider); var p = GlobalMessagePipe.GetPublisher(); var s = GlobalMessagePipe.GetSubscriber(); var p1 = GlobalMessagePipe.GetPublisher(); var s1 = GlobalMessagePipe.GetSubscriber(); var d = s.Subscribe(x => Debug.Log(x), _ => _ == 10); var d1 = s1.Subscribe(1, x => Debug.Log(x)); p.Publish(10); p.Publish(20); p.Publish(30); p1.Publish(1, 30); p1.Publish(2, 30); builder.AddMessageBroker(); provider = builder.BuildServiceProvider(); GlobalMessagePipe.SetProvider(provider); Debug.Log(GlobalMessagePipe.GetPublisher()); d.Dispose(); } private void Method1() { var builder = new BuiltinContainerBuilder(); builder.AddMessagePipe(/* configure option */); // AddMessageBroker: Register for IPublisher/ISubscriber, includes async and buffered. builder.AddMessageBroker(); builder.AddMessageBroker(); // also exists AddMessageBroker, AddRequestHandler, AddAsyncRequestHandler // AddMessageHandlerFilter: Register for filter, also exists RegisterAsyncMessageHandlerFilter, Register(Async)RequestHandlerFilter //builder.AddMessageHandlerFilter>(); // create provider and set to Global(to enable diagnostics window and global fucntion) var provider = builder.BuildServiceProvider(); GlobalMessagePipe.SetProvider(provider); // --- to use MessagePipe, you can use from GlobalMessagePipe. var p = GlobalMessagePipe.GetPublisher(); var s = GlobalMessagePipe.GetSubscriber(); var s1 = GlobalMessagePipe.GetSubscriber(); Debug.Log(s1); var d = s.Subscribe(x => Debug.Log(x)); p.Publish(10); p.Publish(20); p.Publish(30); d.Dispose(); } } }