返回

ET客户端

Init场景

  • Global全局对象,该对象受脚本保护,在切换场景时不会被销毁;挂在的ETModel.Init脚本为ET框架的启动调用入口。

    • BackgroudCamera背景摄像机,该相机主要作用是避免打包到移动端出现的花屏Bug,相机参数为纯色、没有剔除遮罩对象。
    • UICameraUI摄像机,该相机主要作用为渲染UI,相机参数为深度渲染、剔除遮罩对象为UI。
  • EventSystem事件系统对象,主要用于接收UnityMono的各种事件(没有该对象会导致UI事件无法触发)。

ETModel

ETModel.Init

OneThreadSynchronizationContext

单线程同步上下文,该类继承自SynchronizationContext,并实现了Post方法。 该类主要作用是将用于收发消息的多线程同步到主线程中; 类的结构:

  • queue一个线程队列,用于存放其他线程的委托方法
  • Post方法,用于多线程调用,在线程队列中存入多线程委托方法(该方法重写自SynchronizationContext类)
  • Update方法,用于主线程调用,将线程队列中的方法出队并执行

通过上面一进一出,将多线程转换成单线程


这里简单介绍下SynchronizationContext:

SynchronizationContext在通讯中充当传输者的角色,实现功能就是一个线程和另外一个线程的通讯

Send() 是简单的在当前线程上去调用委托来实现(同步调用)。也就是在子线程上直接调用UI线程执行,等UI线程执行完成后子线程才继续执行,需要等待。 Post() 是在线程池上去调用委托来实现(异步调用)。这是子线程会从线程池中找一个线程去调UI线程,子线程不等待UI线程的完成而直接执行自己下面的代码,不需要等待。


Licensed under CC BY-NC-SA 4.0
0