配置

配置

除了通过编辑器UI提供的设置外,您还可以在项目根目录(“Assets”文件夹上一级目录)中创建的hot-reload-config.json文件中找到其他更高级的设置。

{
  "externalSolutions": ["../src/ExternalSlnDir/External.sln"],
  "additionalSourceDirectories": ["../src/SharedUtility"],
  "projectBlacklist": ["../src/ExternalSlnDir/UnitTests/UnitTests.csproj"],
  "projectExclusionRegex": ".*Tests$",
  "polyfillSourceFiles": ["PolyFills/IndexRange.cs"],
  "customServerExecutables": {
    "win-x64": "/path/to/HotReloadServer.exe",
    "linux-x64": "/path/to/HotReloadServer",
    "osx-x64": "/path/to/osx-x64/HotReload.app.zip",
    "osx-arm64": "/path/to/osx-arm64/HotReload.app.zip"
  },
  "excludeAllAnalyzers": true,
  "disableCompilingFromEditorScripts": true
}

修改hot-reload-config.json后,请执行以下操作以确保应用配置更改:

  • 重新编译Unity编辑器
  • 重启Hot Reload服务器

此文件中的所有字段都是可选的。以下是每个选项的说明:

externalSolutions

如果您的外部编译管道编译了在unity项目中使用的程序集,这将非常有用。 在此处添加它们将使Hot Reload能够处理对这些解决方案所做的代码更改。

外部解决方案的文件路径。 路径应相对于unity项目路径指定。

请考虑以下示例:

UnityProject
|_ UnityProject.sln
src
|_ ExternalSlnDir
|\_ External.sln

这里的路径将是../src/ExternalSlnDir/External.sln

additionalSourceDirectories

不属于解决方案文件夹或其子文件夹的其他源目录的文件路径。 路径应相对于unity项目路径指定。

请考虑以下示例:

UnityProject
|_ UnityProject.sln
src
|_ ExternalSlnDir
|_ External.sln
|_ External.csproj <- uses Foo.cs
|_ SharedUtility
|_ Foo.cs

在这种情况下,需要将路径../src/SharedUtility指定为其他源目录。 这主要是为了确保文件观察程序侦听与unity项目相关的所有c#文件。 Assets/和Packages/文件夹以及Packages/manifest.json中指定的所有本地包的路径已经涵盖。

projectBlacklist

Hot Reload应忽略的项目文件的文件路径。 路径应相对于unity项目路径指定。 这可以减少内存使用和启动时间,但如果项目使用的工具不受Hot Reload支持(例如IL-Weaving),也可以防止出现问题。

请考虑以下示例:

UnityProject
|_ UnityProject.sln
src
|_ ExternalSlnDir
|_ External.sln
|_ UnitTests
|\_ UnitTests.csproj

这里的路径将是../src/ExternalSlnDir/UnitTests/UnitTests.csproj

projectExclusionRegex

与projectBlacklist类似,但排除项目名称与给定正则表达式匹配的项目。 示例:.*Tests$将排除所有以Tests结尾的项目

polyfillSourceFiles

应添加到所有unity .csproj文件的源文件的文件路径。 如果您使用csc.rsp在编译脚本程序集时包含polyfill csharp文件,请使用此选项。 路径应相对于unity项目路径指定。

请考虑以下示例:

UnityProject
|_ UnityProject.sln
PolyFills
|_ IndexRange.cs

这里的路径将是PolyFills/IndexRange.cs

customServerExecutables

应使用的自定义服务器可执行文件的路径,而不是从通常的来源下载它们。 如果您想将服务器可执行文件提交到您的存储库,以便在更大的团队中使用Hot Reload时不需要外部下载,这将非常有用。

{
    "customServerExecutables": {
        "win-x64": "/path/to/HotReloadServer.exe",
        "linux-x64": "/path/to/HotReloadServer",
        "osx-x64": "/path/to/osx-x64/HotReload.app.zip",
        "osx-arm64": "/path/to/osx-arm64/HotReload.app.zip"
    }
}

路径应相对于unity项目路径指定或作为绝对路径。

Hot Reload根据Unity编辑器的平台名称查找对应的条目:

  • win-x64:Windows
  • linux-x64:Linux
  • osx-x64:使用Intel版Unity编辑器的Mac(包括在Apple Silicon上通过Rosetta 2运行的Intel版Unity编辑器)
  • osx-arm64:使用Apple Silicon版Unity编辑器的Mac
💡

从1.13.25版本开始,Apple Silicon版Unity编辑器使用原生的osx-arm64服务器。如果您的团队使用Apple Silicon Mac,请添加osx-arm64条目。如果没有此条目,Hot Reload会下载服务器,而不是使用您的可执行文件。

💡

从1.13.25版本开始,服务器可执行文件为HotReloadServer.exe(Windows)和HotReloadServer(Linux)。1.13.24及更早版本使用CodePatcherCLI.exe和CodePatcherCLI。

每当您更新Hot Reload包时,都需要下载更新的二进制文件。

https://cdn.hotreload.net/releases/{version}/server/{platformName}/{fileName} (opens in a new tab)

如果您使用Asset Store版本的Hot Reload,请使用以下URL:

https://cdn.hotreload.net/releases/asset-store/{version}/server/{platformName}/{fileName} (opens in a new tab)

版本是包版本,其中“.”替换为“-”。 因此,对于版本1.13.25,您需要的url是:

两个Mac文件名称相同,请将它们放在不同的文件夹中。

版本可以在HotReload/Runtime/PackageConst.cs中找到 常量“ServerVersion”是您需要使用的版本。

excludeAllAnalyzers

默认情况下,Hot Reload将运行Unity也在运行的所有分析器。 但是,在某些情况下,您只想排除所有分析器。例如,当它们主要用于非必要的诊断时。 这可以加快热重载时间和Hot Reload服务器的总体启动时间。 但是,请谨慎使用此选项。如果您正在使用源生成器,那些也将被禁用,这可能导致Hot Reload无法正常工作。

disableCompilingFromEditorScripts

实验性设置,通常通过在进入/退出播放模式时最小化不必要的重新编译来提高性能。 请注意,该设置可能不适用于所有用户,并且可能会产生副作用。