【Unity】6.2 在VS2015中调试 C# 脚本

Unity虽然是开发游戏用的,但是可以用来验证视觉原理算法。

勇哥折腾了几天,无法运行场景后,让场景对应的C#代码断点断下来,不知道怎么回事。

反复的的从4.x版本安装到5.x,还是不行。

其实不是Unity的版本问题,是教程没教对头。按照下面这个教程则成功了。




一、简介

这一节先利用GUI显示一个简单的界面(以后还会专门介绍GUI),并解释如何在VS2015中调试C#脚本。

本节例子的运行效果如下:

image.png

二、调试C#脚本的方式

有以下方式:

(1)利用断点调试。断点设置和取消的办法与在控制台应用程序中利用断点调试C#代码的办法相同。

(2)通过Debug类提供的方法在后台输出调试信息。该办法会直接在VS2015输出窗口以及Unity的控制台(Console)中输出调试信息。

(3)在Unity的播放预览模式下,直接修改检视器(Inspector)中显示的变量的值,观察不同值的效果。

三、本节例子的设计步骤

1、运行Unity,新建ch06Demo工程。

2、在Project视图的Assets下添加一个名字为“6.2”的子文件夹,然后将默认的场景保存到该文件夹下,场景名称为“Scene2.unity”。

3、在Assets/6.2文件夹下鼠标右击添加一个文件名为ch06_2_1.cs的C#脚本,然后双击它在VS2015中打开该脚本,将其改为下面的内容:

using UnityEngine;
using System.Collections;

public class ch06_2_1 : MonoBehaviour
{
    public int age = 20;
    private string text = "";
    private string myName = "";

    void OnGUI()
    {
        //用标签显示文本
        GUILayout.Label(string.Format("你的年龄是:{0}\n", age));
        GUILayout.Label("请输入你的名字:");
        //在文本区域中输入名字
        text = GUILayout.TextField(text);
        //按钮
        if (GUILayout.Button("提交"))
        {
            myName = text;
        }
        //当myName不为空的时候,说明我们已经提交了名字,则显示名字
        if (!string.IsNullOrEmpty(myName))
        {
            GUILayout.Label("提交成功,名字:" + myName);
        }
    }
}

4、按<Ctrl>+S保存该脚本。

5、切换到Unity,观察Project下的文件夹,会发现6.2文件夹下有2个文件:

image.png

5、在层次视图中鼠标右击,添加一个空的GameObject:

image.png

6、选中GameObject,以便在检视器中观察它。然后将ch06_2_1.cs拖放到检视器中得到下面的结果:

image.png'


这时你就会发现,脚本中声明为public的age变量,在GameObject的检视器视图中被自动封装成了Age属性,并显示在脚本的下面。

说明:这就是为什么我们在C#脚本中用小写字母开头的age来声明这个变量,因为Unity会将自动其封装为用大写字母开头的同名属性。

6、按【播放】按钮进入预览模式,即可看到运行效果:

image.png


7、在文本框中输入名字,单击【提交】按钮,就会在界面中的下一行显示出名字信息。

8、拖放检视器中【Age】属性的值(按住鼠标左右拖放),你就会发现该值在场景中也会跟着变化:

image.png


9、再次按【播放】按钮结束预览模式。

10、切换到VS2015,再要插入代码处鼠标右击,选择【Implement MonoBehabious】,在弹出的窗口中,勾选Start(),如下图所示:

image.png


单击【OK】,它就会自动在当前光标处添加Start()方法。

11、将Start()改为下面的代码:

public void Start()
    {
        Debug.Log("Age:"+age);

        //还可以输出下面的分类信息
         Debug.Log("普通信息");
        Debug.LogWarning("警告信息");
        Debug.LogError("错误信息");
    }

12、选择【Attach to Unity and Play】:

image.png

然后单击它,此时,它就会自动从VS2015切换到Unity,并在Unity的Console选项卡中输出下面的内容:

image.png


当然了,这样做只是为了演示如何在VS2015中直接启动Unity下的播放预览模式,并在Unity的Console中输出不同级别的信息(一般、警告、错误)。在实际的代码中肯定不会这样做,而是应该根据具体情况,决定在后台输出哪一类的调试信息。

13、单击Unity的【播放】按钮结束预览模式。

14、切换到VS2015,结束运行,然后注释掉Start()方法中的语句,单击【保存】或者【全部保存】:

好了,通过这个例子,你应该知道如何在VS2015中调试C#脚本了吧。

另外,你也可以直接在VS2015的解决方案资源管理器中项目的对应文件夹下添加新的C#脚本或者其他资源,或者创建新的子文件夹(VS2015中项目文件夹的结构和Unity工程中Project下文件夹的结构完全相同),保存后它都会自动将其同步到Unity的Assets下的对应文件夹中,这个“同步”过程完全是自动的,你所做的就是“创建”、“编辑”、“保存”。



勇哥注:

上面的教程有些老了。在这里勇哥改新一下信息。

勇哥安装的Unity版本是Unity 2019.1.9f1(64-bit)。

默认的C#版本是vs2017。

安装好Unity后,vs2017中就有了“附加Unity调试程序”。

image.png

运行这个功能后,会让你选择当前运行的Unity实例。

image.png

此时切换到Unity运行场景后,就可以看到vs这边断下来了。

image.png


在vs右键菜单还增加了下面的两项。

image.png

它用于实现Unity的各种消息。

image.png



--------------------- 

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:
  •  访客
     发布于 2020-07-09 22:54:15  回复该评论
  • 勇哥,unity 对视觉到底有啥用呢,3维仿真吗?
    •  勇哥,很想停止
       发布于 2020-07-10 06:57:48  回复该评论
    • 用来学习视觉原理,3d仿真很难,靠我自己这辈子是做不到了,不过有现成的。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864