Unity ECS 学习笔记 —— 热更组件和系统

在上一篇笔记unity ECS 学习笔记 一 子场景以及发布2 - 简书 (jianshu.com)的基础上接入华佗热更框架介绍 | HybridCLR (code-philosophy.com).
默认情况下ECS的代码是不能直接走热更的,这里需要稍微调整下:

  • 加上UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP_RUNTIME_WORLD宏,阻止ECS自动初始化WORLD;


    UNITY_DISABLE_AUTOMATIC_SYSTEM_BOOTSTRAP_RUNTIME_WORLD
  • 加载完成热更新DLL后执行以下代码,初始化Wrold;

        TypeManager.Shutdown();
        TypeManager.Initialize();
        DefaultWorldInitialization.Initialize("Default World", false);
  • 切换到有Entity的场景,类似代码,Test02的内容在上一篇笔记
SceneManager.LoadScene("Test02", LoadSceneMode.Single);

通过以上方式和流程可以实现热更“组件”(IComponentData)和class类型的“系统”(SystemBase),但是基于(ISystem)的值类型“系统”由于ILPostProcess会给dll注入额外代码的原因无法热更(加载时会报错),后面可以研究下是否可以在编译热更dll时也调用下ECS框架的工具给热更dll也注入一下代码;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容