当我玩游戏时它的工作正常,但是当我调试脚本时.Break点转到下一个执行语句,当我按下单位上的跳转按钮然后会话不会进入调试器并且它不工作。但是当我停止MonoDevelop
游戏的调试工作正常。
代码
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;
}
}
}
答案 0 :(得分:2)
(根据建议将我的评论转换为答案......)
基本上你在这里做的是调试所有Unity,而不仅仅是你的游戏代码。有一个很大的区别:当你在MonoDevelop的断点时,Unity编辑器没有响应你的输入!如果你想调试按下Jump时发生的事情,请尝试将断点放在第47行。
第47行是断点,只有在条件为真时才会被击中,并且(严格地)在评估条件后被击中。第44行是在评估条件之前每帧都被击中的断点。它阻止Unity运行,因此您无法单击Unity并在此时按下您的键以影响代码流。我担心这是调试的基础:除了通过调试器之外,你不能在断点处与进程交互。
也就是说:当您在第44行断点时,您的代码正在响应,但是在第44行(每一帧)进行断点操作会让您无法按下某个键来调试代码来检测,因为你不能切换到Unity并在下一个断点被击中之前按一个键。
(作为旁注,我不鼓励:可能工作的是,如果你在代码中包含一个延迟,阻止它被调用/击中断点一两秒钟。您可以在Unity 中按住键,直到命中断点,此时输入系统有望识别出按键。当您逐步执行代码时,此状态仍然有效。但是,这是一个可怕的事情,所以我不推荐它。
如果您想要证明该值是一个条件断点,只有在按下该键时才会触发,可以尝试的内容...)