再见Unity3d的死循环

时间:2023-03-09 00:41:26
再见Unity3d的死循环

前两天看见http://www.manew.com/thread-89909-1-1.html这篇译文之前几个小时刚好解决了一个莫名的死循环问题,然后忍不住要把另外一种方法告诉蛮友们。这个方法不需要知道汇编知识,只需要在VS中会打开线程窗口即可。接下来看看是怎么回事。
我们先建立一个新工程,新建C#文件,然后在Start函数中加入以下代码:

[C#] 纯文本查看 复制代码
1
2
3
4
5
void Start () {
while (true)
{
    int i = 1;
}
}

把这个C#文件挂到场景摄像机或其它GameObject上。

打开这个工程对应的VS工程(如何用VS编辑3d的代码省略),选择“调试/Attach Unity Debuger”菜单来调试Unity3d代码。
在Unity3d中启动游戏,然后整个Unity3d必然卡住。切回VS,选择“调试/窗口/线程"菜单,打开线程窗口。这个时候看不到什么,然后如果我们点击中断按钮 <ignore_js_op>再见Unity3d的死循环 ,奇迹发生了:

在线程窗口出现了正在循环的代码,双击我们的代码的线程,可以把具体的代码显示出来,如下图
<ignore_js_op>再见Unity3d的死循环

以上代码在Unity4.7,VS2013调试。记得先Attach然后再运行游戏。