首页 > 技术文章 > 关于Unity物理事件的执行顺序的最新理解

xiaoahui 2019-01-12 17:26 原文

物体A:

public class A:{

   B b;

   void FixedUpdate(){

       if(input.GetKeyDow(Keycode.I)) {

          collider.enable=false;

          b.lockA=true;

       }

   }

}

物体B:

public class B:{

  bool a=false;

  bool lockA=false;

  OntriggerExit(){

      if(!lockA)debug.log("007");//如果lockA为false,那么打印007

  }

}

运行结果为:007

因为lockA为true,物理事件FiexdUpdate后面执行的,因为应该不会执行得结果007,这说明事件即为事件,事件就是操作发生时立即生效的执行方法,物理事件并非是在FixedUpdate之后才执行,而是在改变Collider的逻辑状态即collider.enable=false;的时候立即同步执行;要想上面的007不会打印出来,只需将if语句里的代码改变顺序即可:

b.lockA=true;

collider.enable=false;

 

推荐阅读