控制实体update默认不更新

This commit is contained in:
YHH
2025-09-26 09:38:51 +08:00
parent 60566e8d78
commit 1ade449c4d
3 changed files with 34 additions and 11 deletions

View File

@@ -12,12 +12,15 @@ export class EntityList {
// 索引映射,提升查找性能
private _idToEntity = new Map<number, Entity>();
private _nameToEntities = new Map<string, Entity[]>();
// 延迟操作队列
private _entitiesToAdd: Entity[] = [];
private _entitiesToRemove: Entity[] = [];
private _isUpdating = false;
// 是否启用实体直接更新
private _enableEntityDirectUpdate = false;
public get count(): number {
return this.buffer.length;
}
@@ -26,6 +29,13 @@ export class EntityList {
this._scene = scene;
}
/**
* 设置是否启用实体直接更新
*/
public setEnableEntityDirectUpdate(enabled: boolean): void {
this._enableEntityDirectUpdate = enabled;
}
/**
* 添加实体(立即添加或延迟添加)
* @param entity 要添加的实体
@@ -137,22 +147,25 @@ export class EntityList {
}
/**
* 更新所有实体
* 更新实体列表和实体
*/
public update(): void {
this._isUpdating = true;
try {
for (let i = 0; i < this.buffer.length; i++) {
const entity = this.buffer[i];
if (entity.enabled && !entity.isDestroyed) {
entity.update();
// 只有启用实体直接更新时才遍历更新实体
if (this._enableEntityDirectUpdate) {
for (let i = 0; i < this.buffer.length; i++) {
const entity = this.buffer[i];
if (entity.enabled && !entity.isDestroyed) {
entity.update();
}
}
}
} finally {
this._isUpdating = false;
}
// 处理延迟操作
this.updateLists();
}