入门指南

入门指南

打开Hot Reload

按照之前的说明设置并启用Hot Reload后,您可以直接在Unity中访问它。

有两种方法可以打开Hot Reload:

  1. 通过在Unity菜单栏中导航到“窗口”,然后选择“Hot Reload”来打开Hot Reload窗口。
  2. 使用快捷键组合Alt+Shift+H快速打开Hot Reload窗口。

打开Hot Reload后,您将在窗口右下角看到一个按钮,上面写着“启动时显示”。此选项允许您选择是否应在Unity启动时自动打开Hot Reload。

下载附加内容

默认情况下,Hot Reload作为极其轻量级的扩展提供。但是,为了使Hot Reload正常运行,它需要下载适用于其运行的特定平台和Unity版本的Hot Reload服务器二进制文件。当Hot Reload首次启动时,它将无缝下载此服务器二进制文件,然后启动Hot Reload。Hot Reload仅在每次将软件包更新到较新版本时在启动时下载此服务器二进制文件。

Hot Reload在安装后下载此服务器二进制文件,而不是最初打包它,因为二进制文件的大小。由于该软件包与Windows、Linux和Mac(Intel和Silicon)兼容,因此我们需要根据您的操作系统使用不同的二进制文件。我们不是将它们全部打包在初始资产中并使总资产大小巨大,而是在您首次安装时仅下载您的操作系统所需的特定二进制文件。这有助于减少带宽,使您比将每个操作系统的二进制文件都包含在初始软件包中更快地开始使用Hot Reload。

Hot Reload服务器二进制文件包含热重载代码所需的所有代码 - dotnet、我们的C#编译器以及我们自己用于热重载更改的代码。如果没有这个,用户将需要安装确切版本的dotnet来编译代码,这是一个巨大的后勤难题,并创建了一个非常难以安装的系统。

服务器二进制文件下载到以下位置:%LocalAppData%/singularitygroup-hotreload/

它是如何工作的?

Hot Reload是一个C#编译器扩展,它只编译已更改的特定方法(速度非常快,只需几毫秒)。编译后,我们只用新版本替换该函数。

这也意味着不涉及域重载,因此您的静态变量保持不变。

未检测到的更改

有时,Hot Reload窗口可能会显示“未应用任何更改”。这意味着Hot Reload处理了文件更改,但决定不在Unity中应用更改。 这通常是因为更改在语义上无关紧要,例如在函数内添加换行符。但是,在极少数情况下,这也可能意味着不支持此类更改,但不知何故Hot Reload未将其归类为此类。

如果Hot Reload显示“未应用任何更改”,即使您进行了真正的更改,也建议使用“重新编译”按钮。

Unity自动刷新

当Hot Reload激活时,它会自动禁用“自动刷新”设置,该设置通常在检测到代码更改时触发域重载。通过在Hot Reload期间暂时禁用此设置,开发人员可以立即看到其代码修改的效果,而不会因域重载而中断。

此外,当Hot Reload服务器关闭时,将恢复先前的“自动刷新”设置。这种对“自动刷新”设置的自动管理保证了Hot Reload会话之间的无缝过渡,从而提高了生产力并减少了不必要的中断。

如果用户希望手动控制“自动刷新”设置,我们的软件提供了一个选项来禁用此自动管理。通过调整设置,开发人员可以保留其首选的“自动刷新”行为,而不管Hot Reload状态如何。此自定义选项允许在使开发环境适应个人偏好和工作流程方面具有更大的灵活性。

您可以使用CTRL+R手动触发重新编译,编辑器将自动确定需要编译的内容。在进行不支持的编辑(例如添加新类)时,应使用此手动重新编译。当您进行不支持的编辑时,将显示明确的警告。

请注意,在进行不支持的编辑后,通常仍然可以继续编辑不相关的文​​件和函数。不支持的编辑在手动重新编译之前在编辑器中根本不可见。

💡

JetBrains Rider的“在Unity中自动刷新资产”同样会干扰Hot Reload。因此,我们建议您禁用此设置。

Hello

升级Hot Reload

当有新版本可用时,升级按钮将出现在Hot Reload窗口的底部,您可以使用它来下载和安装最新版本。

您可以通过包管理器升级Hot Reload,但我们不建议这样做,因为它可能导致编译错误。要安全地使用包管理器,请在安装新版本之前卸载该包。

卸载Hot Reload

如果您想从项目中完全删除Hot Reload,则需要执行以下操作:

  • 停止Hot Reload
  • 使用包管理器删除Hot Reload
  • 删除本地应用程序数据。确保从您的PC中删除了以下文件夹:
    • 删除%LocalAppData%\singularitygroup-hotreload处的文件夹
    • 如果存在,则删除%LocalAppData%\LicenseSpring\codepatchertrial处的文件夹
    • 如果存在,则删除%LocalAppData%\LicenseSpring\codepatcher处的文件夹
    • (在mac上,%LocalAppData%路径对应于/Users/<current-user>/.local/share/
  • 删除<Path-to-unity-project>\Library\com.singularitygroup.hotreload处的项目特定数据文件夹

删除此数据后,您可能需要更新Unity的“自动刷新”和“播放时脚本更改”首选项。有关您的特定Unity版本,请参阅Unity文档 (opens in a new tab)

如果您遇到更改无法自动刷新的问题,请查阅故障排除部分

在某些Unity 6版本中导入Hot Reload时,会创建两个包:Asset Store包和一个自定义包。它们都是同一个包,但Asset Store包无法删除,而自定义包会同时删除两者。

我们正在调查该问题是出在我们这边,还是包管理器(Asset Store包似乎应该导入到Assets文件夹中,这在以前不是这种情况)的临时问题。

导入时出错

在某些Unity版本上导入Hot Reload时,您会收到以下错误:

此错误是无害的,可以忽略。