如何让 Unity 走代理?

最近在学习制作 Unity 游戏, 到了最后需要发布 Android 版本游戏程序的时候, 发现根本导不出来!!!

每次都会卡在 Gradle 的构建上... 看了日志之后知道了原来是从仓库下载包的时候下载失败了...那我就更郁闷了, 我 24 小时全天开着梯子, 你跟我说现在还有我下载不下来的东西? 后来在这篇文章中找到了答案! 解决Unity的网络水土不服问题

原来 Unity 压根不吃梯子啊~ ~ !

解决方法一

使用阿里的镜像源替代 Google 源

  1. 找到 Unity 的安装目录.

  2. 使用 VSCode 打开路径: Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates.

  3. 对路径中的文件逐一修改, 将其中所有的

1
2
google()
jcenter()

修改为:

1
2
3
4
5
6
maven {
url "https://maven.aliyun.com/repository/google"
}
maven {
url "https://maven.aliyun.com/repository/jcenter"
}
  1. 重启 Unity 项目, 重新发布即可!

[]

  1. 文件中要替换的 google() jcenter() 不止一处, 必须全部替换!

  2. Unity 每次打开项目的时候, 都会从模板中复制文件, 在项目中建立缓存, 其中就包含我们刚刚修改的文件. 如果不重启项目, 那么项目中的缓存文件依旧使用的是修改前的文件, 此时发布依旧会失败, 所以必须重启 Unity 项目, 让 Unity 使用我们修改后的模板重新建立缓存!

解决方法二

为 Unity Hub 和 Unity 设置代理

Unity Hub 和 Unity 在连接网络时并不会读取浏览器配置, 因此梯子时无效的! 但是 Unity Hub 和 Unity 会读取环境变量中 HTTP_PROXYHTTPS_PROXY 的值判断是否使用代理.

因此只要配置好这两个环境变量就好了.

1
2
HTTP_PROXY = http://127.0.0.1:1080
HTTPS_PROXY = http://127.0.0.1:1080

结语

我最终采用的是第一种方法, 虽然设置麻烦了一点, 但是没有副作用.

第二种也用过, 也是可以实现的, 但是有副作用, 会导致其他的软件可能无法正常联网, 比如我的饥荒. (未完全证实) 不过我也确实不喜欢改动环境变量! 😂

参考链接

  1. 解决Unity的网络水土不服问题

  2. Unity使用Gradle打包出错问题