1. 程式人生 > >關於Unity物理事件的執行順序的最新理解

關於Unity物理事件的執行順序的最新理解

物體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;