Accelerator 缓存共享服务
文档用途
介绍 Unity Accelerator (也被称之为 cache server) 的服务搭建与使用方法.
痛点分析
Unity 导入资源耗时较长 (大量高清晰度的图片非常费时).
因为 Unity 并不是直接使用资源文件, 而会先将它们按照导入设置转换成 Unity 自己的格式后.
已经被导入完成的资源会作为缓存数据存放在 Unity 工程根目录下的 Library 文件夹内.
能明显感觉耽搁时间的场景举例:
- 在 git clone 之后首次打开工程时.
- 在 git pull 了很多新的资源文件时.
- 在首次切换到一个新的目标平台时.
- 在发生了很多改动后再切换目标平台时.
解决方案
为了解决这个问题, 我们可以搭建并使用 Unity Accelerator (以下简称 Accelerator).
可以简单地理解成: Accelerator 提供了 Library 文件夹的共享服务,
使得局域网内的多台设备可以共享 Library 文件夹中的缓存数据.
其结果是: 只要有一台设备导入了资源文件 (且自动上传到了 Accelerator),
那么其他电脑就不再需要导入相同的资源文件, 只需要从 Accelerator 中下载缓存数据即可.
搭建服务
部署环境
Unity 官方提供了 Accelerator 的 Docker 镜像.
因此最简单的方案是: 使用 Docker 将 Accelerator 服务部署在办公室局域网中.
INFO
请确保办公室内有一台常驻运行的设备, 且该设备的 IP 地址固定 (可通过路由器设置).
Accelerator 对于 CPU 和内存的占用非常低, 但对磁盘空间占用较多.
可以考虑使用 mac mini 或 NAS 设备作为容器运行的宿主环境.
配置并运行
建议使用 docker compose 来配置, compose.yaml 如下:
services:
accelerator:
image: unitytechnologies/accelerator:latest
pull_policy: always
container_name: accelerator
hostname: accelerator
restart: always
volumes:
- /etc/localtime:/etc/localtime:ro # 确保容器时区与宿主系统一致
- unity-cache:/agent
environment:
- DISABLE_USAGE_STATS=true
- USER=admin
- PASSWORD=xxx # 设置管理员密码, 记得替换 xxx
ports:
- "xxx:80" # 此端口用于访问网页控制台, 记得替换 xxx
- "xxx:443" # 此端口用于访问网页控制台, 记得替换 xxx
- "10080:10080" # 此端口用于提供服务 (在 Unity 设置中要用到)
volumes:
unity-cache:
name: unity-cache配置好 compose.yaml 后运行以下命令启动服务:
cd [compose.yaml 所在的路径]
docker compose pull # 拉取容器镜像
docker compose up -d # 启动服务使用方法
IP 地址与端口号
如果开发设备与容器运行的宿主设备在同一子网内, 那么 IP 地址就是宿主设备的局域网 IP.
按照 前面 所写的 compose.yaml 中的端口映射, 端口号为 10080.
[ip-address]:[port]全局启用
对于 Unity 2020 及其更早的版本, 在下图所示的位置配置:

对于 Unity 2021 以上的版本, 在下图所示的位置配置:

单个工程启用
单个工程可以使用全局配置, 也就是下图中的 Use global settings 选项.
单个工程也可以选择不启用, 或是启用但使用其他 IP 地址与端口号.

补充说明
手动上传
如果一个已有的工程初次使用 Accelerator, 则需要我们手动上传缓存数据.
在 Unity 菜单栏点击 Assets / Cache Server / Upload All Assets 即可.