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 @   凌雪寒  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示