MessagePipe + VContainer で Hierarchy 内の GameObject にSubScriber を Injectする方法
5580 ワード
結論
公式ドキュメント
発端
EnemyクラスにてSubscirberをInjectしたがPublish側はPublishできたのにEnemyが受け取れないぞ?
しっかり処理も書いてるのにどういうことかな と詰まりました(ありがち)
以下参考
public class GameLifetimeScope : LifetimeScope {
protected override void Configure (IContainerBuilder builder) {
// 抜粋
var options = builder.RegisterMessagePipe ();
builder.RegisterMessageBroker<DamageData> (options);
}
}
// DamageData を購読して 体力が減ったら自らを消す Enemyクラス
public class Enemy : MonoBehaviour {
private int _HitPoint = 3;
[Inject] private ISubscriber<DamageData> _damageData { get; set; }
private IDisposable disposable;
void Update () {
if (_HitPoint <= 0) {
Destroy (this.gameObject);
}
}
private void Start () {
var bag = DisposableBag.CreateBuilder ();
_damageData.Subscribe (damageData => {
this.supplyDamage (damageData);
}).AddTo (bag);
disposable = bag.Build ();
}
private void supplyDamage (DamageData d) {
_HitPoint -= d.damage;
}
private void OnDestroy () {
disposable?.Dispose ();
}
}
public class DamageData {
public int damage = 0;
}
Author And Source
この問題について(MessagePipe + VContainer で Hierarchy 内の GameObject にSubScriber を Injectする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/nobu-tri/items/98989aadb327168caf55著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .