找回密码
 立即注册
查看: 344|回复: 8

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

[复制链接]
发表于 2021-9-24 16:29 | 显示全部楼层 |阅读模式
一开始卡住了我以为是有什么东西占用过高导致无响应,但是后来看了任务管理器发现Unity各项的占用都不高,也没有其他程序在和它抢。
是在我一点播放按钮的时候就卡住了,还没进入播放的状态(播放按钮都还没变蓝)。



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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-24 16:31 | 显示全部楼层
把asset store的刷新给关掉,能好一些(玄学...
发表于 2021-9-24 16:36 | 显示全部楼层
review一下游戏入口的代码
我遇到一个情况是在连接网络
发表于 2021-9-24 16:44 | 显示全部楼层
。。。占用不高和卡不卡并不强耦合啊。
我随便举例:
int a = 0;
while(true)
{
a++;
thread.sleep(1000);
}
同样占用不会高但是卡的不要不要。哥们我觉得你还是遇到问题先自己找一找。。。别急着上网问。实在解决不了再问啊。。。
发表于 2021-9-24 16:50 | 显示全部楼层
我工作中碰到的主要是由于卸载domain造成的。
unity使用了两个domain,一个root domain,一个child domain。通常运行都是在child domain上。一个domain加载的assembly是不允许单独卸载的,所以要卸载assembly只能卸载domain,再重新创建。当进入play mode时,由于一些状态的改变,就需要卸载child domain。
一个影响的因素是[InitializeOnLoad]属性。可以尽量减少此属性。或者集中到一个类中来执行。
一个影响的因素是OnValidate,这个方法会在进入play mode时调用
另一个影响的因素是mono restart时会做序列化,这涉及到所有需要序列化的class。
2019版本有个Configurable Enter Play Mode会优化这个问题。
发表于 2021-9-24 16:58 | 显示全部楼层
如果是开始运行就卡,有可能跟vs的调试有关,可以试试关了调试,unity就会没事。

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

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

2.vs调试时卡住了,然后占用了unity的线程。这种情况也是关掉vs的调试就好了。
发表于 2021-9-24 17:07 | 显示全部楼层
在unity的启动脚本,就是你挂在场景gameobject的脚本,看看脚本中做了什么事,是否是有网络交互,还是其它操作。然后看Unity的profiler
发表于 2021-9-24 17:14 | 显示全部楼层
今天又一整天卡呀卡的,每次卡完强行关掉进程我做的修改就全没了/(ㄒoㄒ)/~~我这次下狠心等啊等,终于知道原因了。



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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-9-24 17:21 | 显示全部楼层
一个小场景点击play也会卡住吗?
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-15 15:33 , Processed in 0.096114 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表