optimize-scene 是 Decentraland(OpenDCL)场景性能优化技能,主要用于控制场景的三角形、实体、物理体、材质、纹理与高度等资源消耗,提升运行流畅度。
用途与分工:优化模式(对象池、LOD、资源预加载、系统节流)属于运行时机制,写在 src/index.ts;静态布局(椅子、墙体、灯、需要 LOD 的道具)仍应在 main-entities.ts 中声明,优化代码通过 engine.getEntityOrNullByName 或 engine.getEntitiesWith(Transform) 读取这些实体。父子层级优化建议在 main-entities.ts 中用 Transform.parent 表达,便于编辑器整体移动。
主要能力:随地块数 n 扩展的资源上限公式——三角形 n×10,000、实体 n×200、物理体 n×300 为线性;材质 log2(n+1)×20、纹理 log2(n+1)×10、高度 log2(n+1)×20m 为对数;部署另有 15 MB/地块、总计 300 MB、200 文件/地块、单文件 50 MB 的硬限制。除 MB 硬限制外其余为参考值,超出不会崩溃但会降低性能。
优化要点:实体方面用对象池复用、engine.removeEntity 释放、父子层级共享变换;三角形方面采用低多边形模型(小道具 100-500、中物体 500-1,500、大建筑 1,500-5,000、主角模型至多 10,000),按距离切换 LOD 模型,简单形状用 MeshRenderer.setBox/setSphere/setPlane;纹理方面尺寸取 2 的幂,常用 512×512、主角 1024×1024,透明用 .png、无透明用 .jpg,优先 WebP,使用纹理图集并跨材质共享纹理引用。
系统与加载:避免逐帧分配(复用常量向量)、对昂贵操作按 0.5 秒节流、不需要时用 engine.removeSystem 移除系统;超过约 1 MB 的模型可用 AssetLoad 组件配合 LoadingState.FINISHED 预下载后再创建可见实体,并可用 Draco 压缩 .glb、CDN 托管大资源。
常见陷阱与限制:系统过多、未缓存组件查询、未优化的 GLTF、未压缩音频(用 .mp3 替代 .wav)、不必要的逐帧射线检测、昂贵的 TextShape(非 3D 文本改用 Label)。资料未提供该技能的安装命令、价格与收费信息。