HybridCLR 热更新 笔记
创始人
2024-05-23 19:03:36
0

官方文档

实验环境

Unity 版本(国际版): Unity 2020.3.26.f1
hybridclr_unity : https://gitee.com/focus-creative-games/hybridclr_unity.git#v2.0.0-rc

安装HybridCLR (有gitee账号才可使用)

官方安装教程

添加 hybridclr_unity package

  • 方法一:
    在 Unity项目/Packages/manifest.json 文件中添加一行(注意逗号, 末尾行不需要在后面加逗号
    “com.focus-creative-games.hybridclr_unity”: “https://gitee.com/focus-creative-games/hybridclr_unity.git#v2.0.0-rc”,
    如:
{"dependencies": {"com.focus-creative-games.hybridclr_unity": "https://gitee.com/focus-creative-games/hybridclr_unity.git#v2.0.0-rc","com.unity.2d.sprite": "1.0.0","com.unity.2d.tilemap": "1.0.0","com.unity.ide.rider": "3.0.7","com.unity.ide.visualstudio": "2.0.12","com.unity.render-pipelines.universal": "10.8.1","com.unity.textmeshpro": "3.0.6","com.unity.timeline": "1.6.2","com.unity.ugui": "1.0.0","com.unity.modules.ai": "1.0.0","com.unity.modules.androidjni": "1.0.0","com.unity.modules.animation": "1.0.0","com.unity.modules.assetbundle": "1.0.0","com.unity.modules.audio": "1.0.0","com.unity.modules.cloth": "1.0.0","com.unity.modules.director": "1.0.0","com.unity.modules.imageconversion": "1.0.0","com.unity.modules.imgui": "1.0.0","com.unity.modules.particlesystem": "1.0.0","com.unity.modules.physics": "1.0.0","com.unity.modules.physics2d": "1.0.0","com.unity.modules.screencapture": "1.0.0","com.unity.modules.terrain": "1.0.0","com.unity.modules.terrainphysics": "1.0.0","com.unity.modules.tilemap": "1.0.0","com.unity.modules.ui": "1.0.0","com.unity.modules.uielements": "1.0.0","com.unity.modules.umbra": "1.0.0","com.unity.modules.unityanalytics": "1.0.0","com.unity.modules.unitywebrequest": "1.0.0","com.unity.modules.unitywebrequestassetbundle": "1.0.0","com.unity.modules.unitywebrequestaudio": "1.0.0","com.unity.modules.unitywebrequesttexture": "1.0.0","com.unity.modules.unitywebrequestwww": "1.0.0","com.unity.modules.vehicles": "1.0.0","com.unity.modules.video": "1.0.0","com.unity.modules.wind": "1.0.0"}
}
  • 方法二:
    使用 git 拉取 https://gitee.com/focus-creative-games/hybridclr_unity.git 项目到本地
    创建文件夹 com.focus-creative-games.hybridclr_unity
    把拉取下来的文件拷贝到 com.focus-creative-games.hybridclr_unity 文件夹(不要拷贝 .git 文件夹)
    把 com.focus-creative-games.hybridclr_unity 文件夹 拷贝到 Unity项目/Packages/ 文件夹下

安装

运行 HybridCLR/Installer… 再点击安装 (有的版本比较特殊)

HybridCLR Unity项目设置

Build Setting 设置

  1. 使用 Faster runtime。(有的平台有,有的平台无此选项)

Player 设置

  1. Scripting Backend 必须是 IL2CPP
  2. Api Compatibility Level* 没特殊情况 设置为 .Net 4.x
  3. Use incremental GC 取消勾选,暂时不支持增量GC

HybridCLR Settings

  1. 热更新 dll(Hot Update Assemblies) 与 热更新 Assembly Definitions(Hot Update Assembly Definitions)
    不能把同一个dll 名字配置到 两个配置中。 两个都表示可以热更新的 dll 名称(不带扩展名)
    Hot Update Assembiles 表示普通dll
    Hot Update Assembly Definitions 表示Unity项目中的(assembly definition)程序集
  2. externalHotUpdateAssemblyDirs 外部热更新dll搜索路径
    如果热更新 dll 项目 是Unity外部的,则需要配置一个外部dll所在的路径。

泛型

1.HybridCLR的补充元数据技术。如果热更新 dll 中使用到 aot dll 中的泛型类,那么这个aot dll 就需要调用RuntimeApi.LoadMetadataForAOTAssembly 方法来补充元数据。
补充元数据有两个模式
HomologousImageMode.Consistent 只能使用裁减后的AOT dll
HomologousImageMode.SuperSet 既可以使用裁减后的AOT dll 也可以使用原始 AOT dll
补充元数据的泛型函数以解释方式运行,执行效率慢,最好提前在AOT中泛型实例化(HybridCLR/Generate/AOTGenericReference)工具可以自动收集泛型实例
2.il2cpp 的泛型共享技术 (值类型无法使用,最好还是使用(第一种方法+AOT中编写一个泛型实例化))
详细介绍

我的理解

  1. AOT 表示表示静态编译。上下文中的 AOT dll 表示静态编译的 dll(可以理解为除了热更新dll,其他的就是 AOT dll)。静态编译一般是不能被更新的,HybridCLR 中也可以被热更新(具体看官网,除非万不得已不然我不会热更新这个)
  2. 热更新 可以 依赖 热更新dll 以及 AOT dll, 但是 AOT 不可以依赖 热更新 dll。所以热更新dll一般采用 Assembly-CSharp 或者 外部 dll作为热更新 dll。
  3. 热更新多个 dll 时,需要先加载被依赖的 dll

未完待续。。。

相关内容

热门资讯

火烧云小学作文【最新6篇】 火烧云小学作文篇一:火烧云的美丽火烧云是一种非常美丽的自然景观,它们在天空中绽放出绚丽的色彩,给人们...
人间自有温情在作文(精简3篇... 人间自有温情在作文 篇一温情的力量人间自有温情,在日常生活中,我们时常能够感受到这种力量。温情是指人...
小学三年级抗疫情作文(精简5... 小学三年级抗疫情作文 篇一:我们一起抗疫,共克时艰新冠疫情的突然爆发给全世界带来了巨大的挑战,人们的...
有你真好的作文(通用6篇) 有你真好的作文 篇一有你真好每个人的生活中都会有那么一个重要的人,他们的存在让我们的生活变得更加美好...
我上学了(优选3篇) 我上学了 篇一我上学了已经有好几年了,回想起来,这段时光仿佛就在眨眼间过去了。刚开始上学的时候,我还...
有趣的游戏小学作文400字【... 有趣的游戏小学作文400字 篇一标题:童年乐园——躲猫猫游戏在我心中,有一个让我欢乐无比的游戏,那就...
那次玩得真高兴作文(优秀5篇... 那次玩得真高兴作文 篇一那次玩得真高兴上个周末,我和我的朋友们一起去了游乐园玩,那次真是玩得太高兴了...
初一七年级学生作文题目【优选... 初一七年级学生作文题目 篇一我的暑假计划暑假即将来临,我对未来的两个月充满了期待和计划。今年的暑假,...
假如考上了名校,我要回来看看... 假如考上了名校,我要回来看看我的母校小学作文 篇一当我考上了名校,我内心感到无比的兴奋和自豪。这是我...
校园桂花香小学作文【最新3篇... 校园桂花香小学作文 篇一校园桂花香小学作文我所在的学校是一所名为桂花香小学的学校,这个名字来源于学校...
春天小学一年级作文300字(... 春天小学一年级作文300字 篇一春天的花儿春天是一个美丽的季节,大地万物都在春天苏醒,充满了生机和活...
小学中秋节的作文【优选3篇】 小学中秋节的作文 篇一中秋节是中国传统的节日之一,也是我最喜欢的节日。在这一天,我和家人一起庆祝,品...
梦里清江小学作文【优质3篇】 梦里清江小学作文 篇一我爱梦里清江小学梦里清江小学是我上学的地方,它位于美丽的梦里清江边。每当我踏进...
难忘的秋游小学作文450字(... 难忘的秋游小学作文450字 篇一难忘的秋游今天,我们全班去郊游了,这是我度过的一个最难忘的秋天。我们...
可怜的骆驼作文(优质3篇) 可怜的骆驼作文 篇一骆驼是一种生活在沙漠中的动物,它们背上长着一座座驼峰,可以存储大量的水分,帮助它...
倔老头作文【优选3篇】 倔老头作文 篇一倔老头的坚持倔老头是我家附近的一位老先生,他已经七十多岁了,但他的身体和精神状态一直...
小学生一年级的作文400字(... 小学生一年级的作文400字 篇一我的暑假计划暑假就要来了,我有很多计划,让我来给大家说说吧!首先,我...
师爱温暖我的心小学作文【优秀... 师爱温暖我的心小学作文 篇一师爱温暖我的心作为一名小学生,我有幸遇到了一位非常特别的老师,她就是我的...
可爱的金毛小学作文【优秀3篇... 可爱的金毛小学作文 篇一我家的金毛小狗我家有一只可爱的金毛小狗,它的名字叫做小黄。小黄是一只非常聪明...
四年级上册三单元作文【优秀3... 四年级上册三单元作文 篇一我的家乡我是一个四年级的学生,我想给大家介绍一下我的家乡。我的家乡是一个美...