add uiManager auto scan and load skin resource

This commit is contained in:
Vick Scarlet
2021-11-07 23:00:22 +08:00
parent 22fa5d755a
commit 2666983f89
5 changed files with 25 additions and 19 deletions

View File

@@ -72,6 +72,12 @@ class UIManager {
// load view
const ViewClass = await this.loadView(viewName);
const resourceList = await ViewClass.load?.(args);
const scanedResourceList = this.#loading? this.scanResource(ViewClass.uiView): [];
if(preload) {
preload = [].concat(preload).concat(scanedResourceList);
} else {
preload = scanedResourceList;
}
await this.loadRes(resourceList, preload, onProgress);
// create view
@@ -127,4 +133,17 @@ class UIManager {
clearAllDialog() {
this.#dialogLayer.removeChildren();
}
scanResource(uiView) {
if(!uiView) return [];
const resourceList = [];
if(uiView.props?.skin) {
resourceList.push(uiView.props.skin);
}
uiView.child?.forEach(child => {
resourceList.push(...this.scanResource(child));
});
return resourceList;
}
}