🌸 Article

Unity Hub 离线安装 Unity 6 编辑器(20260612实测)

  • Unity Hub
  • Fiddler
  • 折腾

Unity Hub 离线安装 Unity 6 编辑器(仅下载阶段需短暂代理)

背景

Unity Hub 在国内下载编辑器速度极慢或直接失败。本方案的核心思路:

1. 手动下载编辑器安装包(需短暂代理,仅此一步)
2. 搭建本地 HTTPS 服务器,模拟 Unity 官方下载域名
3. Fiddler 劫持 + hosts 重定向,让 Unity Hub 从本地下载
4. 代理启动 Hub,完成离线安装

最终效果:只需在步骤 1 用代理获取一次安装包,后续安装完全走本地,无需代理。


步骤 1:确定版本号并下载安装包

1.1 查看版本号

打开 Unity Hub,在”安装”页面查看最新版编辑器的版本号。

示例版本号:6000.4.11f1

alt text

1.2 获取下载地址

使用代理(非本地/非香港节点),访问对应版本的 Release Notes 页面:

https://unity.com/releases/editor/whats-new/6000.4.11f1

⚠️ 注意:版本号需与 Hub 中显示的完全一致。若页面跳转到团结网,请使用无痕窗口 + 切换美国或日本节点重试。

1.3 提取原始下载链接

在 Unity Hub 界面右上角依次点击 用户菜单 → 帮助与支持 → 日志,打开日志文件 info-log.json,按 Ctrl+F 搜索 Windows64EditorInstaller,即可得到原始下载地址,格式如下:

https://download.unity3d.com/download_unity/b0a1d6caadd2/Windows64EditorInstaller/UnitySetup64-6000.4.11f1.exe

步骤 2:创建本地目录结构

选定一个根目录(示例:D:\SoftwareBP),按照原始下载地址的路径层级逐级创建文件夹:

D:\SoftwareBP\
└── download_unity\
    └── b0a1d6caadd2\
        └── Windows64EditorInstaller\
            └── UnitySetup64-6000.4.11f1.exe

即路径 /download_unity/b0a1d6caadd2/Windows64EditorInstaller/ 要与原始 URL 的路径部分保持一致。

alt text


步骤 3:搭建本地 HTTPS 静态文件服务器

此服务器用于让 Unity Hub 通过 HTTPS 从本地读取安装包,模拟访问 download.unity3d.com

3.1 创建服务脚本

在根目录下创建 https_server.py,内容如下:

from http.server import HTTPServer, SimpleHTTPRequestHandler
import ssl
import os
import sys
import ipaddress
from datetime import datetime, timedelta, timezone

# HTTPS 默认端口 443(不加端口号)
PORT = 443
KEY_FILE = "server.key"
CRT_FILE = "server.crt"

def install_dependency():
    try:
        from cryptography import x509
    except ImportError:
        print("正在安装依赖...")
        import subprocess
        subprocess.check_call([sys.executable, "-m", "pip", "install", "cryptography"])

def generate_cert():
    from cryptography import x509
    from cryptography.x509.oid import NameOID
    from cryptography.hazmat.primitives import serialization, hashes
    from cryptography.hazmat.primitives.asymmetric import rsa

    key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
    with open(KEY_FILE, "wb") as f:
        f.write(key.private_bytes(
            encoding=serialization.Encoding.PEM,
            format=serialization.PrivateFormat.PKCS8,
            encryption_algorithm=serialization.NoEncryption(),
        ))

    utc_now = datetime.now(timezone.utc)
    subject = issuer = x509.Name([
        x509.NameAttribute(NameOID.COMMON_NAME, "localhost")
    ])

    cert = (
        x509.CertificateBuilder()
        .subject_name(subject)
        .issuer_name(issuer)
        .public_key(key.public_key())
        .serial_number(x509.random_serial_number())
        .not_valid_before(utc_now)
        .not_valid_after(utc_now + timedelta(days=3650))
        .add_extension(
            x509.SubjectAlternativeName([
                x509.DNSName("localhost"),
                x509.IPAddress(ipaddress.IPv4Address("127.0.0.1")),
            ]),
            critical=False,
        )
        .sign(key, hashes.SHA256())
    )

    with open(CRT_FILE, "wb") as f:
        f.write(cert.public_bytes(serialization.Encoding.PEM))

if __name__ == "__main__":
    install_dependency()

    if not os.path.exists(KEY_FILE) or not os.path.exists(CRT_FILE):
        print("🔐 生成HTTPS证书...")
        generate_cert()
        print("✅ 证书生成完成!")

    httpd = HTTPServer(("127.0.0.1", PORT), SimpleHTTPRequestHandler)
    context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    context.load_cert_chain(certfile=CRT_FILE, keyfile=KEY_FILE)
    httpd.socket = context.wrap_socket(httpd.socket, server_side=True)

    print("="*50)
    print("✅ HTTPS 服务器已启动!")
    print("🌐 直接访问:https://127.0.0.1")
    print("🌐 直接访问:https://localhost")
    print("="*50)
    print("按 Ctrl+C 停止服务")

    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        httpd.shutdown()

前提:需要安装 Python 环境。首次运行时会自动安装 cryptography 依赖。

3.2 启动服务

在根目录的地址栏输入 cmd 打开命令终端,执行:

python https_server.py

启动成功后将显示 ✅ HTTPS 服务器已启动!

alt text

3.3 验证服务

打开浏览器访问 https://127.0.0.1,若能正常看到本地文件目录,说明 HTTPS 服务搭建成功。

alt text

浏览器会提示证书不受信任,这是自签名证书的正常现象,忽略即可。


步骤 4:Fiddler Classic 劫持 + hosts 重定向

4.1 配置 Fiddler

安装并打开 Fiddler Classic,依次点击 Tools → Options → HTTPS,勾选 Decrypt HTTPS traffic,然后最小化放后台即可。

alt text

4.2 修改 hosts 文件

用管理员权限编辑 C:\Windows\System32\drivers\etc\hosts,添加以下映射:

127.0.0.1 download.unity3d.com

这样 Unity Hub 访问 download.unity3d.com 时会被导向本地服务器,从本地目录读取安装包。


步骤 5:代理启动 Unity Hub

5.1 创建启动脚本

新建一个 .bat 文件,内容如下(注意替换 Unity Hub 的实际安装路径):

@echo off
set NODE_TLS_REJECT_UNAUTHORIZED=0
set HTTP_PROXY=http://127.0.0.1:8888
set HTTPS_PROXY=http://127.0.0.1:8888
start "" "C:\Program Files\Unity Hub\Unity Hub.exe"

5.2 执行安装

双击运行该 bat 文件,Unity Hub 将通过 Fiddler 代理 + hosts 重定向从本地读取安装包,正常完成编辑器安装。

5.3 安装完成后

关闭 Unity Hub,然后以正常方式(双击快捷方式,不走 bat 代理)重新打开即可正常使用。


常见问题与提高成功率的方法

  • 关闭 Windows 防火墙,避免拦截本地 443 端口
  • 关闭其他代理软件,防止与 Fiddler 端口冲突
  • 若 Python 脚本报错,可通过 AI 工具(DeepSeek / ChatGPT / Gemini)辅助排查
  • 确保 https_server.py 运行期间不要关闭终端窗口
  • Fiddler 首次启用 HTTPS 解密时可能需要安装根证书,按提示操作即可