Program.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using System.Threading;
  3. namespace ET
  4. {
  5. public static class Program
  6. {
  7. public static void Main()
  8. {
  9. //这里大家看着可能比较困惑,为什么要绕一大圈呢,之前这里直接调用Model层,现在却要在CoderLoader中获取Model的程序集找到Entry入口再调用
  10. //原因是,之前DotNet.App直接依赖Model,但是在客户端,之前的Mono却不依赖Model。这导致前端跟后端程序集依赖不太一样
  11. //所以这次加了个Loader的程序集,客户端的Mono程序集也改成Loader,这样前后端Model都引用Loader,Loader通过反射去调用Model的Entry。
  12. //这样前后端的程序集依赖就保持了一致。这里调用了Entry.Init()是为了防止dotnet裁剪Model的程序集,毕竟如果App没有调用model,那么dotnet认为
  13. //model并没有用到,就不会加载,结果会导致CodeLoader反射调用model失败。
  14. //客户端服务端不热更不共享的组件可以写到Loader中,比如表现层需要一个组件不需要热更,可以写在Loader中,这样性能更高。如果客户端跟服务端共享的并且不需要热更的
  15. //的组件可以写在Core中
  16. Entry.Init();
  17. Init.Start();
  18. long nowMS = DateTime.Now.Ticks;
  19. while (true)
  20. {
  21. Thread.Sleep(15);
  22. try
  23. {
  24. Init.Update((int)((DateTime.Now.Ticks - nowMS)/10000));
  25. Init.LateUpdate();
  26. Init.FrameFinishUpdate();
  27. nowMS = DateTime.Now.Ticks;
  28. }
  29. catch (Exception e)
  30. {
  31. Log.Error(e);
  32. }
  33. }
  34. }
  35. }
  36. }