protected virtual void fixedUpdate(float elapsedTime) { if (mFrameComponentUpdate == null) { return; } int count = mFrameComponentUpdate.Count; for (int i = 0; i < count; ++i) { // 因为在更新过程中也可能销毁所有组件,所以需要每次循环都要判断 if (mFrameComponentUpdate == null) { return; } FrameSystem component = mFrameComponentUpdate[i]; if (component != null && !component.isDestroy()) { #if UNITY_EDITOR || DEVELOPMENT_BUILD Profiler.BeginSample(component.getName()); #endif component.fixedUpdate(elapsedTime); #if UNITY_EDITOR || DEVELOPMENT_BUILD Profiler.EndSample(); #endif } } }
protected virtual void drawGizmos() { if (mFrameComponentUpdate == null) { return; } int count = mFrameComponentUpdate.Count; for (int i = 0; i < count; ++i) { // 因为在更新过程中也可能销毁所有组件,所以需要每次循环都要判断 if (mFrameComponentUpdate == null) { return; } FrameSystem component = mFrameComponentUpdate[i]; if (component != null && !component.isDestroy()) { component.onDrawGizmos(); } } }
protected virtual void lateUpdate(float elapsedTime) { if (mFrameComponentUpdate == null) { return; } int count = mFrameComponentUpdate.Count; for (int i = 0; i < count; ++i) { // 因为在更新过程中也可能销毁所有组件,所以需要每次循环都要判断 if (mFrameComponentUpdate == null) { return; } FrameSystem component = mFrameComponentUpdate[i]; if (component != null && !component.isDestroy()) { component.lateUpdate(elapsedTime); } } }
// a小于b返回-1, a等于b返回0, a大于b返回1,升序排序 static public int compareDestroy(FrameSystem a, FrameSystem b) { return(sign(a.mDestroyOrder - b.mDestroyOrder)); }
// a小于b返回-1, a等于b返回0, a大于b返回1,升序排序 static public int compareUpdate(FrameSystem a, FrameSystem b) { return(sign(a.mUpdateOrder - b.mUpdateOrder)); }
// a小于b返回-1, a等于b返回0, a大于b返回1,升序排序 static public int compareInit(FrameSystem a, FrameSystem b) { return(sign(a.mInitOrder - b.mInitOrder)); }
private List <int> recycleList = new List <int>(); //id回收列表 /// <summary> /// 初始化 /// </summary> public void InitFrameSys() { Intance = this;//单例赋值 }
// Start is called before the first frame update void Awake() { FrameSystem frameSystem = GetComponent <FrameSystem>(); frameSystem.InitFrameSys(); }