/// <summary> /// 从 UpdateManager 注销一个 FixedUpdate 方法。 /// </summary> /// <param name="func">待注销的 FixedUpdate 方法。</param> public static void UnregisterFixedUpdate(FastUpdate func) { fixedUpdatesToBeAdded.Remove(func); if (!fixedUpdatesToBeRemoved.Contains(func)) { fixedUpdatesToBeRemoved.Add(func); } }
/// <summary> /// 向 UpdateManager 注册一个 Update 方法。 /// 如果之前已经提交注销该方法,则取消注销申请;如果之前已经提交注册该方法,则保留注册申请。 /// </summary> /// <param name="func">待注册的 Update 方法。</param> public static void RegisterUpdate(FastUpdate func) { updatesToBeRemoved.Remove(func); if (!updatesToBeAdded.Contains(func)) { updatesToBeAdded.Add(func); } }
/// <summary> /// 从 UpdateManager 注销一个 LateUpdate 方法。 /// </summary> /// <param name="func">待注销的 LateUpdate 方法。</param> public static void UnregisterLateUpdate(FastUpdate func) { lateUpdatesToBeAdded.Remove(func); if (!lateUpdatesToBeRemoved.Contains(func)) { lateUpdatesToBeRemoved.Add(func); } }
private void PostUpdate(double delta) { _session.GameMobs.Remove(null); _session.GameTower.Remove(null); if (_fastUpdateObjectQueue.Count > 0) { return; } var mobs = _session.GameMobs.Where(a => a != null).OrderBy(r => r.LastUpdate).Take(_maxMobsSendUpdate).ToList(); var tower = _session.GameTower.Where(a => a != null && a.hasChanged).OrderBy(r => r.LastUpdate).Take(_maxMobsSendUpdate) .ToList(); var up = new FastUpdate { Mobs = mobs.Select(a => a.ToMobMoveObject()).ToArray(), Tower = tower.Select(a => a.ToTowerStateModel()).ToArray() }; _fastUpdateObjectQueue.Push(up); }