优化Gamemanager

This commit is contained in:
2026-06-04 19:31:40 +08:00
parent 14287777a4
commit 6e0fefd3c9
6 changed files with 1612 additions and 1456 deletions

View File

@ -0,0 +1,189 @@
# GameManager.ts 清理报告
## 📊 清理统计
| 指标 | 清理前 | 清理后 | 减少 |
|------|--------|--------|------|
| 代码行数 | 836行 | 345行 | **-59%** |
| console.log | 12个 | 0个 | **-100%** |
| console.warn | 保留 | 4个 | 仅保留必要警告 |
---
## ✅ 保留的功能(实际被使用)
### 核心方法
1.`Awake()` - 初始化
2.`updateDictionaries()` - 更新材质和网格字典
3.`applyMaterial()` - 应用材质属性
4.`toggleRollerDoor()` - 卷帘门开关切换
5.`setRollerDoorState()` - 设置卷帘门状态
6.`isRollerDoorOpen()` - 查询卷帘门状态
7.`setYAxisClip()` - Y轴剖切
8.`clearYAxisClip()` - 清除剖切
9.`listMeshNames()` - 调试用
### 私有辅助方法
-`cacheRollerDoorMeshes()` - 卷帘门网格缓存
---
## ❌ 移除的功能(未被使用)
### 1. 纹理管理系统约400行
```typescript
// 整个 initSetMaterial 方法及相关代码
async initSetMaterial(oldObject: any) { ... }
private applyPBRProperties(mat: PBRMaterial, component: any) { ... }
private clearTextures(textureDic: Dictionary<any>): Promise<void> { ... }
private handleTextureAssignment(...) { ... }
private checkTextureLoadedWithPromise(texture: Texture): Promise<void> { ... }
// 相关字段
private oldTextureDic: Dictionary<any>;
private failedTextures: Array<...>;
```
**原因:** 没有任何地方调用 `initSetMaterial()`,整个纹理加载系统未使用
### 2. 剖切平面可视化约50行
```typescript
private clipPlaneVisualization: Mesh | null;
// 相关创建/销毁逻辑
```
**原因:** 可视化功能未启用
### 3. 卷帘门缩放方法
```typescript
private setRollerDoorScale(meshName: string, scale: Vector3): void { ... }
```
**原因:** 从未被调用,且在 Awake 中被注释掉
### 4. 重置相机方法
```typescript
reSet() {
if (this.mainApp.appCamera?.object?.position) {
this.mainApp.appCamera.object.position.set(160, 50, 0);
}
}
```
**原因:** 从未被调用
---
## 🔧 代码优化
### 1. 删除所有调试 console.log
```typescript
// ❌ 删除
console.log(options);
console.log('box', AppConfig.env.background);
console.log(material.name);
console.log(`[拖拽吸附] ...`);
// ✅ 保留必要的警告
console.warn('Scene not found');
console.warn(`Model not found: ${options.modelId}`);
```
### 2. 修复 applyMaterial Bug
```typescript
// ❌ 删除硬编码(之前覆盖用户参数)
material.roughness = 0.8;
material.metallic = 0;
// ✅ 正确实现
if (options.roughness !== undefined) {
if (material.roughness !== options.roughness) {
material.roughness = options.roughness;
}
}
```
### 3. 优化导入语句
```typescript
// ❌ 删除未使用的导入
import { TransformNode } from "@babylonjs/core";
import { AppConfig } from './AppConfig'; // 未使用
```
### 4. 简化字段定义
```typescript
// ❌ 删除
private oldTextureDic: Dictionary<any>;
private failedTextures: Array<{...}>;
private clipPlaneVisualization: Mesh | null;
// ✅ 保留必要字段
private materialDic: Dictionary<PBRMaterial>;
private meshDic: Dictionary<any>;
private rollerDoorMeshes: AbstractMesh[];
private yClipPlane: Plane | null;
```
---
## 📝 剩余职责
清理后GameManager 现在只负责:
1. **材质管理**
- 维护材质/网格字典
- 应用材质属性
2. **卷帘门动画**
- 开关控制
- 平滑动画
3. **Y轴剖切**
- 设置剖切平面
- 清除剖切
4. **调试工具**
- 列出网格名称
**职责清晰,单一原则!**
---
## ⚠️ 注意事项
### 备份文件
- 原文件已备份为 `GameManager.old.ts`
- 如需回滚:`mv src/babylonjs/GameManager.old.ts src/babylonjs/GameManager.ts`
### 验证测试
请测试以下功能确保正常工作:
- [ ] 材质换色 `kernel.material.apply()`
- [ ] 卷帘门动画 `kernel.door.toggle()`
- [ ] Y轴剖切 `kernel.clipping.setY()`
- [ ] 模型拖拽后材质更新
### 如果发现遗漏的功能
如果有某个功能实际在用但被移除了,请告诉我:
1. 功能名称
2. 调用位置
3. 我会立即恢复并标记为"保留"
---
## 🎯 下一步建议
1. **删除备份文件**(确认无问题后)
```bash
rm src/babylonjs/GameManager.old.ts
```
2. **删除重复文件**
```bash
rm src/babylonjs/AppModel\ copy.ts
```
3. **清理其他文件的 console.log**
- AppModelDrag.ts (28个)
- AppDropZone.ts (31个)
- 其他文件...
4. **考虑进一步拆分**(可选)
- MaterialManager.ts - 材质管理
- RollerDoorController.ts - 卷帘门动画
- ClippingManager.ts - 剖切功能