VContainer-integrations/unirx | 集成——UniRx

UniRx 是一个为 Unity 优化的 Rx(响应式扩展)库。

将 VContainer 入口点与 UniRx 结合的示例:

public class FooController : IStartable, IDisposable
{
    readonly CompositeDisposable disposable = new CompositeDisposable;

    void IStartable.Start()
    {
       fooObservable
           .Subscribe(_ => /* 响应操作 */)
           .AddTo(disposable)
    }

    void IDisposable.Dispose() => disposable.Dispose();
}

如果想创建一个类似 AddTo(this) 的快捷方式,可通过扩展方法简化订阅管理:

public class ControllerBase : IDisposable
{
    readonly CompositeDisposable disposable = new CompositeDisposable;

    void IDisposable.Dispose() => disposable.Dispose();

    public void AddDisposable(IDisposable item)
    {
        disposable.Add(item);
    }
}

public static class DisposableExtensions
{
    public static T AddTo<T>(this T disposable, ControllerBase controller)
        where T: IDisposable
    {
        controller.AddDisposable(disposable);
        return disposable;
    }
}

使用示例:

public class FooController : ControllerBase, IStartable
{
    void IStartable.Start()
    {
        someObservable
            .Subscribe(...)
            .AddTo(this);
    }
}
posted @ 2025-02-18 00:36  凌雪寒  阅读(73)  评论(0)    收藏  举报