Unity脚本与调试

(1)新建一个简单的脚本,命名为DebugTest,代码如下,当与某一对象进行绑定时,可获得场景中全部对象的列表(包括自身),当启动关卡(Scene)并执行Start()时,可将对象位置设置在世界原点位置处,即(0,0,0)。

using UnityEngine;
using System.Collections;

public class DebugTest : MonoBehaviour 
{
    // Use this for initialization
    void Start () 
    {
        //Get all game objects in scene
        Transform[] Objs = Object.FindObjectsOfType<Transform>();

        //Cycle through all objects
        for(int i=0; i<Objs.Length; i++)
        {
            //Set object to world origin
            Objs[i].position = Vector3.zero;
        }
    }
}


(2)将DebugTest.cs与某一对象进行绑定,假设与场景中的Cube绑定,即成为Cube的组件;


(3)在VS中设置断点;
在Assets中双击DebugTest.cs,在VS中设置断点;若没有把VS2017设置为默认的脚本编辑器,可单击编辑器菜单栏中的Edit按钮,再单击下拉菜单中的“Preference……”按钮,进入参数设置界面,单击“External Tools",进入外部设置界面,查看第一项”External ScriptEditor“外部脚本编辑器选中项是否为Visual Studio,若不是,则单击”Browse……“选择Visual Studio的安装路径。

(4)调试→附加Unity调试程序;选择项目,按确定;此时在VS底部弹出局部变量框,输出框;

(5)回到Unity中,点击Play按钮;若到达断点,则Unity的执行过程处于停止状态(中断模式)。然后会自动跳转到VS中的断点行,且断点呈现黄色高亮显示,并以此显示当前执行步骤。


此时可在局部变量框中查看处于活动状态的变量值;

当处于中断状态时,一种快速添加查看的方式是,将鼠标指针悬停在高亮显示的代码行上,稍后将自动弹出一个窗口,该窗口将显示某一变量的完整查看信息。
(6)按F5、F10、F11等进行调试;
(7)调用堆栈
调用堆栈窗口可用于查看函数之间的调用关系;将上述代码稍作改进,类中包含多个函数,并于其中调用其他函数。

using UnityEngine;
using System.Collections;

public class DebugTest : MonoBehaviour 
{
    // Use this for initialization
    void Start () 
    {
        //Get all game objects in scene
        Transform[] Objs = Object.FindObjectsOfType<Transform>();

        //Cycle through all objects
        for(int i=0; i<Objs.Length; i++)
        {
            //Set object to world origin
            Objs[i].position = Vector3.zero;
        }

        //Enter Function 01
        Func01();
    }
    //-------------------------------------
    //Function calls func2
    void Func01()
    {
        Func02();
    }
    //-------------------------------------
    //Function calls func3
    void Func02()
    {
        Func03();
    }
    //-------------------------------------
    //Function prints message
    void Func03()
    {
        Debug.Log ("Entered Function 3");
    }
    //-------------------------------------
}


将断点设置在38行;

按上述步骤执行调试,当到达该行时,执行流程将处于暂停状态。在 调用堆栈窗口,可以发现,调用堆栈窗口将以逆序方式列出函数名称。具体而言就是活动函数或近期函数位于栈顶,并向下至早期或首个被调用的函数。双击某个函数,可在源代码中查看具体情况。

(8)调用层次结构
鼠标指针置于Func02()内,右击选择查看调用层次结构

在底部弹出调用层次结构,可以看到Func02()的前后调用函数关系;

(9)追踪点
在16行设置断点;

右击断点选择操作;

在将消息记录到输出窗口中输入i:{i}

此时圆形的断点标志变成菱形;
按之前调试方法调试,在调试时游戏将直接在Unity Editor中以常规模式运行,当遇到跟踪点时,程序并不会像断点那样处于暂停状态或进入中断模式。而是向窗口输出对应语句;

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值