调试不起作用

时间:2015-10-20 16:23:07

标签: c# debugging unity3d

当我玩游戏时它的工作正常,但是当我调试脚本时.Break点转到下一个执行语句,当我按下单位上的跳转按钮然后会话不会进入调试器并且它不工作。但是当我停止MonoDevelop游戏的调试工作正常。

enter image description here

enter image description here

代码

public class player : MonoBehaviour {
    private bool onGround;

    private float chargedJump;

    private float maxJump;

    void Start () {

        onGround = true;

        chargedJump = 0f;

        maxJump = 10f;

    }
    void Update () {
        if(onGround){

                     if(Input.GetButton("Jump")){

                if(chargedJump<maxJump){
                    chargedJump +=Time.deltaTime*10f;
                }
                else{
                    chargedJump = maxJump;
                }

            }
            }

1 个答案:

答案 0 :(得分:2)

(根据建议将我的评论转换为答案......)

基本上你在这里做的是调试所有Unity,而不仅仅是你的游戏代码。有一个很大的区别:当你在MonoDevelop的断点时,Unity编辑器没有响应你的输入!如果你想调试按下Jump时发生的事情,请尝试将断点放在第47行。

第47行是断点,只有在条件为真时才会被击中,并且(严格地)在评估条件后被击中。第44行是在评估条件之前每帧都被击中的断点。它阻止Unity运行,因此您无法单击Unity并在此时按下您的键以影响代码流。我担心这是调试的基础:除了通过调试器之外,你不能在断点处与进程交互。

也就是说:当您在第44行断点时,您的代码正在响应,但是在第44行(每一帧)进行断点操作会让您无法按下某个键来调试代码来检测,因为你不能切换到Unity并在下一个断点被击中之前按一个键。

(作为旁注,我不鼓励:可能工作的是,如果你在代码中包含一个延迟,阻止它被调用/击中断点一两秒钟。您可以在Unity 中按住键,直到命中断点,此时输入系统有望识别出按键。当您逐步执行代码时,此状态仍然有效。但是,这是一个可怕的事情,所以我不推荐它。

如果您想要证明该值是一个条件断点,只有在按下该键时才会触发,可以尝试的内容...)