Unity3D的断点调试功能



这篇文章介绍的调试工具是Unity自带的MonoDevelop, 假设要用VS,须要下载unityvs http://unityvs.com/.


http://liweizhaolili.blog.163.com/blog/static/162307442013214485190/


       断点调试功能可谓是程序猿必备的功能了。Unity3D支持编写js和c#脚本。但非常多人可能不知道,事实上Unity3D也能对程序进行断点调试的。只是这个断点调试功能仅仅限于使用Unity3D自带的MonoDevelop编辑器。而用Visual Studio是不行的。听说有个叫做UnityVS的东西能够使用VS对Unity进行断点Debug。只是阿赵我本人没试过。


好了,简单的说说做法吧:



首先肯定是先要把脚本编辑器指定为MonoDevelop了。


Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵

 

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵



 


选择好之后,能够在项目面板右键选择Sync MonoDevelop Project来打开MonoDevelop。 


Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵



由于须要有脚本才干对脚本进行调试。所以我写了个非常easy的脚本,里面有两个button,按第一个“add”button的时候,程序会用一个循环的方式把从0到9的数加起来。然后累加给sum。

按第二个button时,会把sum清零。

 


Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵




写好脚本之后,把脚本随便拖到场景的物体上面,我们准备调试了。在调试之前。我们须要把MonoDevelop和Unity3D进行连接。



详细的连接方法有2种:


第一种,先把当前场景保存一下,然后关掉Unity。

回到MonoDevelop,按F5或者点击Debugbutton。

 

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵


这样,MonoDevelop会打开一个新的Unity3D界面。这时候连接完毕了。



另外一种方法。无需关掉Unity,在MonoDevelop的Run菜单下选择Attach to Process 

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵



然后选择Unity的进程,点击Attachbutton。

 

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵



这时候,MonoDevelop就连接上了Unity了。



当连接好了Unity3D之后,右边的调试button就变成可用了,我们把视窗显示选择Debug。


Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵


debug模式脚本以下的位置会多出两个窗体。

 

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵


回到Unity,点击执行button,会看到刚才的脚本已经执行了。里面有两个button。

 

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
回到MonoDevelop,在脚本里面我们打一个断点(在行号左边点一下) 
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
 然后回到Unity里面,点击第一个button“add”。

这时候断点起作用了,程序会暂停,MonoDevelop跳到断点的行。

 
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
留意看以下debug的Locals信息。会看到当前状态下的变量i和sum的值。 
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
使用调试button。让程序单步的执行
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
我们看到了当前的变量i和sum的实际变化情况。
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
到这里,断点调试已经完毕。
调试完之后,我建议最好把MonoDevelop和Unity3D的连接断开。

假如你不断开的话。Unity会一直处于非常卡的状态。

断开的方法也是有几种了。首先相应Debugbutton有一个断开的button。能够直接点击断开。 
 
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
或者我们能够把刚才附加的进程Detach掉。 
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
 
Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
再或者,我们能够点击这个插头button,把Debugger 断开。

Unity3D的断点调试功能 - 阿赵 - 有爪的小羔羊阿赵
 
 

         这两种方法连接Unity,我建议还是使用另外一种附加进程的方式吧。毕竟你不可能每次调试都要关掉一次Unity然后再从MonoDevelop打开一次Unity。

所以,编写脚本的时候,把连接Detach掉,等须要调试的时候。再把进程Attach上去,进行调试即可了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中if else语句用法_Python中if-else语句的多种写法

原博文 2017-02-06 10:24 − 初学Python在看程序时发现python中if-else的多种写法,故对其进行分析。 以下为网络内容: a, b, c 1, 2, 3 1.常规 if a>b: &nb... 相关推荐 2019-11-13 15:13 − if x A: do something for A elif x B: do somethi…

Reflux系列01:异步操作经验小结

写在前面 在实际项目中,应用往往充斥着大量的异步操作,如ajax请求,定时器等。一旦应用涉及异步操作,代码便会变得复杂起来。在flux体系中,让人困惑的往往有几点: 异步操作应该在actions还是store中进行&…

python转换成c语言_把python转成c

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 推荐使用腾讯云 api 配套的7种常见的编程语言 sdk,已经封装了签名和请求过程,均已开…

python逐行写入csv_python将列表按行写入csv

原博文 2020-05-14 13:17 − import csv rows2 [abc1/ab1c,N] for n in range(10): f open("ok.csv", a,newline) writer csv.writer(f) writer.writerow(rows2) f.cl...02349 相关推荐 2019-12-18 14:42 − 逗号分隔值(Comma-Separated Values&#x…

第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动 8

这个方法所做的事情就是:446行: 首先通过Device类的executeShellCommand方法发送类似”adb shell getprop”的命令去获得所有支持的系统属性,这个方法最终调用的是AdbHelper类的executeShellCommand方法,它会接收一个专门用来对指定shell命令如getprop的…

新手买车的九大原则

汽车俨然已经成为了人们生活中不可缺少的助手。放眼市场,汽车的品牌、车型、颜色、配置,划分的类别太多太多,让众多爱车友人在购车时眼花缭乱。由于厂家、商家片面的宣传和误导以及购车者思想上或这样或那样的误区,使众人面对购车…

python实现链表的删除_Python垃圾回收机制

python作为一门解释型语言,以代码简洁易懂著称。我们可以直接对名称赋值,而不必声明类型。名称类型的确定、内存空间的分配与释放都是由python解释器在运行时进行的。python这一自动管理内存功能极大的减小了程序员负担,这也是成就python自身的重要原因之…

第一章:The Missing Code Library--2.合法化输入

合法化输入:只允许数字和字母 用户常常会忽略掉说明,并且输入错误的数据。作为一个Shell脚本开发人员,你需要拦截并纠正这些错误。 典型情况是,你或许会遇见文件名或是数据库的键。你提示用户要输入一个全部由大小写字母和数字…

java 缓存清理echo_“kill -9”一时爽,秋后算账泪两行

原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处。任何不保留此声明的转载都是抄袭。kill是杀死的意思,带有主动的意味。鉴于master、slave这样的名词,需要在计算机软件中进行整改&#xff…

解决stackoverflow打开慢不能注册登录

http://blog.csdn.net/dream_an/article/details/50280977 解决stackoverflow打开慢不能注册登录 标签: stack overflowfirefox扩展打不开 2015-12-13 09:16 131人阅读 评论(2) 收藏 举报 分类:综合(6) 作者同类文章X版权声明&a…

halcon 旋转_HALCON高级篇:3D相机标定(3/3)

访问标定结果算子calibrate_cameras的主要结果由相机内参和每一张图像标定板的位姿组成。算子将它们存储在标定数据模型中,可以用算子get_calib_data来访问它们。相机外参并不能直接被获取,因为所需的世界坐标系统的信息没有存储在标定数据模型中。然而&…

什么叫n+1次select查询问题?

在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象。以Customer和Order类为例,假定ORDERS表的CUSTOMER_ID外键允许为null,图1列出了CUSTOMERS表和O…

OGRE 入门 二、Basic Tutorial 1 : An introduction to the most basic Ogre constructs

1. 下载源代码及脚本 这里有一个‘Convenient All-In-One’ 版的框架。 2. 创建场景 解压clean_ogre_cmake_project.zip,修改TutorialApplication.cpp中的函数: 1 void TutorialApplication::createScene(void)2 {3 // create your scene here :)4 …

React Native 重新建项目遇到的一些问题

1、基本上一句话,就是本地的node太旧了,跟不上React_Native的节奏,所以需要更新node,但是单纯的更新node丫丫竟然不让我跟,因为是用Homebrew来管理的,所以先update了下brew brew update && brew up…

picACG本地缓存目录_手机上本地存储的哪些文件、文件夹不能删?

手机、电脑随着不断的使用,系统本身、系统工具、第三方应用都会不断产生一些临时文件和垃圾文件。手机产生的垃圾文件更是显得杂乱无章,虽然可以使用系统自带或第三方应用来清理垃圾,但在本地存储还是有大量的文件夹或文件是可以手动删除的。…

python元组和列表的联系_Python元组与列表的区别和联系?

1.元组和列表比较相似,不过它们之间也有着不同: (1)列表:一个大仓库,你可以随时往里边添加和删除任何东西。 (2)元组:封闭的列表,一旦定义,就不可…

pytorch自带网络_PyTorch机器学习笔记(1)整好环境

2020年1月1日炼丹第0步,装好环境系统 Ubuntu 18.04 LTS先装上conda(自带大多数科学计算基础包,以及比较优秀的包管理系统):国内网络环境建议到清华大学镜像站下载:Tsinghua Open Source Mirror​mirror.tun…

Effective C# Item22:使用事件定义外发接口

事件为类型定义了外发接口,C#的事件是建立在委托的基础上的,委托为事件处理器提供了类型安全的函数签名。 委托要比事件的使用范围广泛,我们可以把事件看做是一种经过了封装的委托,专门用于事件驱动模型。你可以在客户代码中直接调…

python画菱形的代码_Python打印“菱形”星号代码方法

本人是一名python初学者,刚刚看到一道有趣的python问题,“用python如何在编译器中打印出菱形图案?” 因此决定尝试一下,代码不多,仅供参考。 代码 def printStar(intNum): s "*" spaceLength intNum block…

Ubuntu 14.04.3 LTS 配置 DNS Server

我们目的是用一台局域网机器完成 192.168.1.113 <-->cloudshield.com的解析&#xff0c;指定A记录和CNAME; 0.关于Ubuntu 14.04.2 LTS 下载、安装、更新这里就直接跳过了; 1.下载安装工具 bind9 sudo apt-get install bind9 DNS 配置文件在/etc/bind 目录中。安装bind9后…