pc8888888 发表于 2021-9-24 16:29

为什么Unity在CPU、内存、磁盘、网络这些占用都不高的情况下play还会卡住?

一开始卡住了我以为是有什么东西占用过高导致无响应,但是后来看了任务管理器发现Unity各项的占用都不高,也没有其他程序在和它抢。
是在我一点播放按钮的时候就卡住了,还没进入播放的状态(播放按钮都还没变蓝)。



现在要么等(很久很久,我都等了快10分钟了,一点反应都没有),要么结束进程。可是结束进程的话,原来对场景做的改动就无法保存了。这个问题已经出现好几次了,就算我换了场景点击播放还是会出现这个问题。
请问为什么Unity会莫名卡住?现在该怎么办?

ps:重开Unity重启电脑都试过了,没有用。

RhinoFreak 发表于 2021-9-24 16:31

把asset store的刷新给关掉,能好一些(玄学...

HuldaGnodim 发表于 2021-9-24 16:36

review一下游戏入口的代码
我遇到一个情况是在连接网络

HuldaGnodim 发表于 2021-9-24 16:44

。。。占用不高和卡不卡并不强耦合啊。
我随便举例:
int a = 0;
while(true)
{
a++;
thread.sleep(1000);
}
同样占用不会高但是卡的不要不要。哥们我觉得你还是遇到问题先自己找一找。。。别急着上网问。实在解决不了再问啊。。。

BlaXuan 发表于 2021-9-24 16:50

我工作中碰到的主要是由于卸载domain造成的。
unity使用了两个domain,一个root domain,一个child domain。通常运行都是在child domain上。一个domain加载的assembly是不允许单独卸载的,所以要卸载assembly只能卸载domain,再重新创建。当进入play mode时,由于一些状态的改变,就需要卸载child domain。
一个影响的因素是属性。可以尽量减少此属性。或者集中到一个类中来执行。
一个影响的因素是OnValidate,这个方法会在进入play mode时调用
另一个影响的因素是mono restart时会做序列化,这涉及到所有需要序列化的class。
2019版本有个Configurable Enter Play Mode会优化这个问题。

kirin77 发表于 2021-9-24 16:58

如果是开始运行就卡,有可能跟vs的调试有关,可以试试关了调试,unity就会没事。

当然,我也遇到过vs没调试也卡,关了unity重开就没事了。

如果是运行中过程卡。
1.出现最多的就是运行中修改代码,然后unity重新编译。原因未明,有可能更网络连接的线程没有关掉。

2.vs调试时卡住了,然后占用了unity的线程。这种情况也是关掉vs的调试就好了。

zt3ff3n 发表于 2021-9-24 17:07

在unity的启动脚本,就是你挂在场景gameobject的脚本,看看脚本中做了什么事,是否是有网络交互,还是其它操作。然后看Unity的profiler

RecursiveFrog 发表于 2021-9-24 17:14

今天又一整天卡呀卡的,每次卡完强行关掉进程我做的修改就全没了/(ㄒoㄒ)/~~我这次下狠心等啊等,终于知道原因了。



就是它!!!我在程序一开始做了一个连接网站获取的数据的操作。结果网站那头坑了,导致我这一直连不上(⊙﹏⊙)b

现在知道罪魁祸首了,接下来的问题就是该怎么办。
延迟执行是完全不考虑的,这会造成用户更多的等待。其他办法还没想到,等我想好了再来更新╮(╯▽╰)╭

unityloverz 发表于 2021-9-24 17:21

一个小场景点击play也会卡住吗?
页: [1]
查看完整版本: 为什么Unity在CPU、内存、磁盘、网络这些占用都不高的情况下play还会卡住?