• Mono Driver
    • 自动被驱动的条件
      • 手动挂载
    • 增强接口
    • 在主线程中运行
    • 协同执行

    Mono Driver

    Mono Driver 为非继承自MonoBehavior的类提供类模拟MonoBehavior的行为。

    所有的Mono Driver增强接口都支持优先级特性

    自动被驱动的条件

    您定义的类需要满足下面条件才会被自动被MonoDriver挂载执行。

    • 类必须通过Container进行Make
    • 类在Container必须以单例进行绑定
    • 类必须实现必须的MonoDriver提供的增强接口

    手动挂载

    对于非单例,自己手动New出的对象,如果需要挂在到MonoDriver执行,那么必须手动使用Attach接口进行挂载。

    1. var driver = App.Make<IMonoDriver>();
    2. driver.Attach(/*you object*/);

    注意,如果您使用了手动挂载,您必须自己管理卸载。使用Detach可以卸载挂载的对象。

    增强接口

    下表描述了MonoDriver可以被实现的增强接口以及对应Unity Monobehavior的关系。

    增强接口 对应MonoBehavior行为
    IUpdate Update
    ILateUpdate LateUpdate
    IFixedUpdate FixedUpdate
    IOnGUI OnGUI
    IOnDestroy OnDestroy

    在主线程中运行

    您可以通过MainThread将一个执行调度到主线程执行。

    1. var driver = App.Make<IMonoDriver>();
    2. driver.MainThread(()=>{});

    协同执行

    MonoDriver 允许开发者定义的组件使用Unity提供的协同调度服务。通过StartCoroutine您可以执行一个协同程序

    1. var driver = App.Make<IMonoDriver>();
    2. driver.StartCoroutine(()=>{ yield return null; });

    同理,通过StopCoroutine来终止一个协同。