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

嘛,是这样的,Unity在使用Package Manager等工具时,有时候会下载不下来东西,然后卡死。这是怎么回事呢

首先,通过询问官方,我们知道,目前Unity Package Manager主要会访问这么几个地址

  • packages.unity.com
  • download.packages.unity.com
  • dl.bintray.com
  • api.bintray.com
  • akamai.bintray.com

但是,最下面三个,在大陆访问是不通畅的,而比如Tiny Mode啊、ECS Framework啊这类的包,都是放在这个上面的,

那怎么办呢,用梯子呗。

众所周知,现在的梯子大概两种,一种是VPN这种直接把整个网络通道都覆盖掉的,另一种是以影梭为主的,默认只会代理HTTP/HTTPS的,

而问题在于,影梭的代理,是只修改系统的浏览器默认设置。而Unity默认又不会读取浏览器的代理设置。简单的说,它不吃ss/ssr的梯子。

那怎么办呢,其实也简单:我们从环境变量下手好了。

windows下,写一个.bat脚本,内容如下:

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

注意这地方,HTTPS的设置value也是“http://xxxx”,而不是”https://xxxx”

mac下,脚本如下

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

Linux下同理


然后我们来看看原理,首先,用脚本设置环境变量,为什么在脚本中设置呢,因为很多人梯子是不稳定的,一直开着会影响网络的稳定性。而如果你直接在系统窗口里设置环境变量,而梯子没开的话,所有用到这个环境变量的程序都会网络异常。

所以我们在脚本中设置它,然后,启动Unity Hub,这时候Unity Hub就已经在代理下运行了。这时候通过Unity Hub启动Unity Editor的话,Editor下的一切都是走在代理上的。

yomunsam

yomunsam

一只会咬人的游戏程序

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>