优化Framework.UI新增便捷接口

This commit is contained in:
janing
2025-12-14 23:35:54 +08:00
parent d530b48e34
commit 1d91daa726
5 changed files with 285 additions and 1742 deletions

View File

@@ -123,9 +123,16 @@ export class UILogin extends UIBase {
/**
* 必须重载: 返回 UI 资源路径
*
* 编写规则:
* 1. 普通资源路径: 'prefabs/ui/UILogin'
* 2. Bundle资源路径: '[bundle名]://资源路径'
* 示例: 'ui-bundle://prefabs/UILogin'
*/
onGetUrl(): string {
return 'prefabs/ui/UILogin';
// 或使用 bundle 方式:
// return 'ui-bundle://prefabs/UILogin';
}
/**
@@ -323,6 +330,8 @@ onEnd() - 清理资源(可选)
## ⚠️ 注意事项
1. **必须重载 onGetUrl()**: 每个 UI 必须明确定义资源路径
- 普通资源路径格式: `'prefabs/ui/UILogin'`
- Bundle资源路径格式: `'[bundle名]://资源路径'` (例如: `'ui-bundle://prefabs/UILogin'`)
2. **UI 根节点设置**: 在加载任何 UI 之前,必须先设置 UI 根节点
3. **缓存机制**: 已加载的 UI 会被缓存,再次加载时直接使用缓存
4. **资源自动管理**: UIMgr 会自动管理资源加载和释放
@@ -367,7 +376,11 @@ if (canvas) {
```typescript
// 检查: 资源路径是否正确
onGetUrl(): string {
return 'prefabs/ui/UILogin'; // 确保路径正确
// 普通资源路径
return 'prefabs/ui/UILogin';
// 或使用 Bundle 资源路径
// return 'ui-bundle://prefabs/UILogin';
}
```
@@ -383,6 +396,8 @@ if (!UIMgr.getInstance().has(UILogin)) {
1. **单一职责**: 每个 UI 类只负责一个界面
2. **资源路径统一**: 建议在配置文件中统一管理 UI 资源路径
- 对于需要分包加载的 UI,使用 Bundle 路径格式: `'[bundle名]://资源路径'`
- 对于通用 UI,使用普通路径格式: `'资源路径'`
3. **事件解绑**: 在 onEnd() 中解绑所有事件,避免内存泄漏
4. **参数传递**: 使用 params 参数在加载时传递初始数据
5. **缓存利用**: 对频繁切换的 UI,利用缓存避免重复加载