- Zenject utilities for CAFU
- Provide injection for UniRx.MessageBroker
- Bind
IMessagePublisher
toMessageBroker
- Bind
IMessageReceiver
toMessageBroker
- Bind
- Provide interfaces and extensions to publish/receive some instance
IInstancePublisher
IInstanceReceiver
- UniRx
- Zenject
- CAFU v3
yarn add "umm/cafu_zenject#^1.0.0"
Add CAFUInstaller.prefab
into Prefab Installers
of Scene Context in System scene.
If you want to exchange instances generated dynamically, you can use wrapper of UniRx.MessageBroker
.
Implements IInstancePublisher
and call this.Publish()
to notify and publish instance.
using System;
using CAFU.Zenject.Utility;
using UniRx;
using UnityEngine;
using Zenject;
public class Foo : MonoBehaviour,
IInstancePublisher
{
[Inject] IMessagePublisher IInstancePublisher.MessagePublisher { get; }
private void Start()
{
// Notify self instance
this.Publish();
}
}
Implements IInstanceReceiver
and call this.Receive<T>()
to receive published instance.
using System;
using CAFU.Zenject.Utility;
using UniRx;
using Zenject;
public class Bar :
IInitializable,
IInstanceReceiver
{
[Inject] IMessageReceiver IInstanceReceiver.MessageReceiver { get; }
void IInitializable.Initialize()
{
// Receive instance when created
this.Receive<Foo>()
.Subscribe(/* Do something */);
}
}
Copyright (c) 2018 Tetsuya Mori
Released under the MIT license, see LICENSE.txt