
前两天看见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> ,奇迹发生了:
在线程窗口出现了正在循环的代码,双击我们的代码的线程,可以把具体的代码显示出来,如下图
<ignore_js_op>
以上代码在Unity4.7,VS2013调试。记得先Attach然后再运行游戏。