Version: 2019.4
故障排除
创建自定义包

网络问题

使用 Diagnostics 工具

使用 Unity Package Manager Diagnostics 工具可以诊断 Unity Package Manager 的常见网络相关问题。Diagnostics 工具运行 Unity 支持团队需要的一些基本网络测试,以诊断常见的网络问题。运行该工具后,您可以与 Unity 支持团队共享结果,因此 Unity 支持团队可以更好地指导您解决这些问题。

可以通过 Unity Package Manager Error 对话框或通过手动运行启动脚本来运行 Unity Package Manager Diagnostics。

Diagnostics 工具运行完成后,将在 shell 窗口中显示测试结果。还将写入一个日志文件和一个报告文件,您可以从 shell 窗口中打开这两个文件:

Shell 窗口中的工具结果上的诊断报告
Shell 窗口中的工具结果上的诊断报告

运行 Unity Package Manager Diagnostics 后,您可以:

从 Unity Package Manager Error 对话框中启动

当 Unity 尝试启动时,将在加载项目之前启动 Package Manager 进程。如果在 Package Manager 中遇到严重错误,Unity 将显示以下错误消息:

严重错误对话框,提示您采取操作
严重错误对话框,提示您采取操作

要运行 Diagnose 工具,请单击 Diagnose。Unity 将关闭并在新窗口中启动 Diagnostics 工具。

通过脚本启动

在 Unity 安装文件夹下的 Diagnostics 文件夹中找到脚本:

操作系统: Diagnostics 命令行工具的路径
Windows <path-to-unity-installation-folder>
   \Unity
      \Data
         \Resources
            \PackageManager
               \Diagnostics
                  \RunUnityPackageManagerDiagnostics.bat
macOS
Linux
<path-to-unity-installation-folder>
   \Unity.app
      \Contents
         \Resources
            \PackageManager
               \Diagnostics
                  \RunUnityPackageManagerDiagnostics

要启动该工具,请在文件浏览器中双击脚本文件,或从命令行运行脚本文件。

配置防火墙

确保 Unity Package Manager 可以使用 HTTPS 访问以下域名:

  • packages.unity.com
  • download.packages.unity.com
  • upm-cdn.unity.com(对于中国的地点,则是 upm-cdn-china.unitychina.cn)

将上述域名添加到防火墙的允许域列表中。

配置代理服务器

使用代理服务器时,请配置 Unity Package Manager 的 HTTP_PROXYHTTPS_PROXY 环境变量(用于针对 Unity 包注册表执行请求)。

您可以根据操作系统来全局设置这些变量(系统变量或用户变量)。或者,您可以仅为 Unity Hub 设置环境变量(在 Unity Hub 启动后)。

对于处于防火墙后面的环境,可以为自签名证书配置 SSL 证书颁发机构。

自签名证书

在某些公司和机构中,用户位于防火墙后面,只能通过代理访问互联网。一些代理会解压缩 HTTPS 内容,并使用其自己的自签名证书重新打包这些内容。Unity Package Manager 的基础 HTTPS 层会拒绝这些自签名证书,因为它无法识别这些自签名证书,并将连接视为可能是中间人攻击。这意味着除非您配置其他 SSL 证书颁发机构以允许这些证书,否则您将无法在 Unity 中使用许多功能,包括 Package Manager。

要配置其他 SSL 证书颁发机构,请执行以下操作:

  1. 创建一个包含一个或多个自定义证书颁发机构的文本文件。该文件应包含一个或多个 Privacy-Enhanced Mail (PEM) 格式的受信任证书。例如:

    -----BEGIN CERTIFICATE-----
    MIIC+zCCAeOgAwIBAgIJAO0U6hVJnbvjMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
    BAMMCWxvY2FsaG9zdDAeFw0xOTAzMTIwMTIxMzRaFw0yOTAzMDkwMTIxMzRaMBQx
    EjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
    ggEBAKNh0EM7j57pXorGs5OHzlk9TYeUqITtXXdWfY1fbqRdj+a8qLNs4m/nDsDW
    KgibHYG3FUqIidjPL61DLQuWUPY9Zo+uQaccIe0E5wb+To9mwMlLuhMD6iCPFRpe
    jcDhNj4vG1RVARMO1jupeZqdb+xHBZqtmMJmtiDOBxt662Z4hvoH8mdqNEuSkozz
    HqXmcdigrTO37DspGRBx08GJlHFHUs7C+hYOsOdNjME3dH/8uihjKYiqQb1E12dN
    PNL7jYm3AZv+qUmDFM3BJE0hSmAP00GuTJxbe31Kh4e7N5/XSiLsnqwircOj/Hfi
    eWjtsoXbCNDIiWUQtXBeLD/BdvkCAwEAAaNQME4wHQYDVR0OBBYEFDFw8VDkgMne
    mDjgo+b1iaPfUkdVMB8GA1UdIwQYMBaAFDFw8VDkgMnemDjgo+b1iaPfUkdVMAwG
    A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAFEjUWGz1r3xSsbwUJsRhbMc
    M7Jjf9/r833H7eq31mbl/JbXPnpo8IctMuWyw42ccMtgq7i+coQeKwvWnHtI5rhe
    vshEkIqNPAoCnpW5NLprYDDTG1PDEhv6FYpW8Alq65i03tptzaoHlH3sH+97E/h0
    qSYI7yNHWMC5u0r1DB0BR+lZsj6RnwWPySMSuXx5sSiKIS/HkkMVwwmxKa4ZwuwS
    LFwHSUdqk0lJK4b0mCwyTHNvYO1IDziE5EKwfuaKVgOa62iCHVahgIVa+een4EfS
    hCCr3M3cq11Mi+mnRi1scxxrOno4OEEChWg2szZLlxBrkVJllrrq620XJ6RLB/8=
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl
    MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
    d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
    b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG
    EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
    cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi
    MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c
    JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP
    mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+
    wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4
    VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/
    AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB
    AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW
    BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun
    pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC
    dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf
    fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm
    NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx
    H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
    +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
    -----END CERTIFICATE-----
    
  2. 尽管 Unity 支持文件系统上的任何位置,但尽量将此文件与 upm-config.json 放在同一个位置。

  3. 在系统级 Unity 配置文件夹中创建一个名为 upm-config.json 的空 JSON 文件:

    • Windows:%ALLUSERSPROFILE%Unity/config
    • macOS:/Library/Application Support/Unity/config
    • Linux:/usr/share/unity3d/config
  4. upm-config.json 文件中,将 caFile 属性集添加到 PEM 文件的绝对文件路径。例如:

    {
      "caFile": "C:\\ProgramData\\Unity\\config\\cert.pem"
    }
    

为 Unity Hub 设置环境变量

本节说明了如何创建一个可从 Windows 命令提示符macOS 或 Linux 终端运行的命令文件。或者,也可以将命令直接复制并粘贴到提示窗口或终端窗口中。

注意:在运行命令文件之前,请完全关闭 Hub。如果 Hub 正在运行,则脚本会将焦点切换到 Hub,而不会重新启动,因此不会应用更改的代理设置。

Windows

请按照以下说明在 Windows 上创建一个命令文件。

该文件将启动设置了环境变量的 Hub。您可以双击文件,也可以从命令提示符调用文件。Unity 将这些环境变量传递给从 Hub 启动的任何 Unity Editor 进程。

  1. 打开一个文本编辑器,如记事本。

  2. 输入以下文本,将 proxy-url 替换为正确的代理服务器 URL,并根据需要调整 Hub 安装路径:

    @echo off
    set HTTP_PROXY=proxy-url
    set HTTPS_PROXY=proxy-url
    start "" "C:\Program Files\Unity Hub\Unity Hub.exe"
        
    

    注意:如果路径中有空格,则必须在程序路径的两边使用双引号。

  3. 将文件保存到易于找到的位置(例如 Desktop),并确保文件具有 .cmd 后缀(例如 launchUnityHub.cmd)。

macOS

请按照以下说明在 macOS 上创建 launchUnityHub.command 文件。

该文件将启动设置了环境变量的 Hub。您可以双击文件,也可以从 Bash 终端调用文件。Unity 将这些环境变量传递给从 Hub 启动的任何 Unity Editor 进程。

注意:双击命令文件将打开一个终端窗口或选项卡,即使在脚本执行完毕后,这个窗口或选项卡也会保持打开状态。可以在 Terminal.app 的偏好设置中更改此行为。

  1. 打开终端窗口。

  2. 输入以下脚本,将 proxy-url 替换为正确的代理服务器 URL,并根据需要调整 Hub 安装路径:

    echo '#!/bin/bash
    export HTTP_PROXY=proxy-url
    export HTTPS_PROXY=proxy-url
    nohup "/Applications/Unity Hub.app/Contents/MacOS/Unity Hub" &>/dev/null &' > launchUnityHub.command
    chmod +x launchUnityHub.command
    

    注意:如果路径中有空格,则必须在程序路径的两边使用双引号。

  3. 如果愿意,可以将 launchUnityHub.command 文件移动到方便的位置(例如,Desktop)。

故障排除
创建自定义包