| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- import Time from "../tools/Time";
- const { ccclass } = cc._decorator;
- @ccclass
- export default class PrefabManager extends cc.Component {
- static _ins: PrefabManager = null;
- Destroy() {
- this.destroy();
- PrefabManager.loaded = false;
- PrefabManager.otherPrefabDic = {};
- PrefabManager.othersLoaded = false;
- PrefabManager._ins = null;
- }
- private static loaded: boolean = false; //是否已加载成功
- private static uiDic = {}; //字典
- private static uiUrlKeys: string[] = []; //UI界面资源Url数组
- public static otherPrefabDic = {}; //其余预制体 红包... ...
- public static othersLoaded: boolean = false; //水果资源加载是否完成
- private loadUiAry: string[] =
- [
- //"ui/ForwardPanel",
- //"ui/EffectPanel",
- //"ui/RedbagPanel",
- //"ui/RedbagGpPanel"
- ];
- static get Loaded() {
- //return PrefabManager.loaded && PrefabManager.othersLoaded;
- return PrefabManager.loaded;
- }
- onLoad() {
- PrefabManager._ins = this;
- console.log("PrefabManager:onLoad");
- this.LoadUiPrefabs();
- //this.LoadOtherPrefabs();
- //this.LoadAudio();
- // cc.audioEngine.preload("audios/hit",()=>{
- // console.log("audio loaded");
- // });
- // cc.loader.loadRes('audios/' + AudioType.hit, (err, cip) => {
- // console.log("hit audio loaded");
- // })
- }
- /**加载UI资源*/
- LoadUiPrefabs() {
- //PrefabManager.loaded = true;
- //return;
- // console.log("PrefabManager:onLoad");
- console.log("--------Start Load PrefabUI");
- PrefabManager.loaded = true;
- console.log("-->Loading PrefabManager load ok!");
- return;
- //放到 游戏中动态加载
- //cc.loader.loadResArray(this.loadUiAry, cc.Prefab, (err, objects) => {
- cc.loader.loadResDir("ui", cc.Prefab, (err, objects, urls) => {
- for (let i = 0; i < objects.length; i++) {
- let key = urls[i];
- console.log(urls[i]);
- PrefabManager.uiUrlKeys.push(key);
- PrefabManager.uiDic[key] = objects[i];
- }
- PrefabManager.WaitLoaded();
- });
- }
- /**
- * 等待Prefab资源加载完成
- */
- static async WaitLoaded() {
- console.log("WaitLoaded");
- await Time.WaitForSeconds(cc.director.getDeltaTime());//cc.director.getDeltaTime()*5
- PrefabManager.loaded = true;
- console.log("-->Loading PrefabManager load ok!");
- //首次进入场景 加载当前解锁关卡
- //console.log("是否加载完成:"+PrefabManager.Loaded+"---"+GameData.Instance.currentLevelId);
- //GameFacade.Instance.LoadedFinished();
- //GameFacade.Instance.UIMng = UIManager.Instance;
- //GameFacade.Instance.LoadLevel(GameData.Instance.currentLevelId);
- //GameFacade.Instance.mainPanel = <MainPanel>UIManager.Instance.GetPanel(PanelType.MainPanel);
- //GameFacade.Instance.mainPanel.OnEnter();
- //AdManager.Instance.signPanel.CheckSign();
- }
- /**
- * 加载其他预制体资源
- */
- LoadOtherPrefabs() {
- cc.loader.loadResDir("prefab/other", cc.Prefab, (err, objects, urls) => {
- for (let i = 0; i < objects.length; i++) {
- let key = urls[i];
- PrefabManager.otherPrefabDic[key] = objects[i];
- }
- console.log("Loading PrefabManager other loaded");
- PrefabManager.othersLoaded = true;
- });
- }
- /**
- * 获取Prefab
- */
- public static LoadUi(key: string): cc.Prefab {
- return this.uiDic[key];
- }
- /**加载页面*/
- public static LoadPanel(key: string): cc.Node {
- console.log("Prefab Url:" + key);
- return cc.instantiate(this.LoadUi(key));
- }
- /**异步加载页面*/
- public static LoadPanelAsync(key: string, cb: any = null) {
- if (!PrefabManager.uiDic[key]) {
- cc.loader.loadRes(key, cc.Prefab, (error, item) => {
- PrefabManager.uiDic[key] = item;
- let panel = cc.instantiate(item);
- if (cb) {
- cb(panel);
- }
- });
- } else {
- let panel = cc.instantiate(this.LoadUi(key));
- if (cb) {
- cb(panel);
- }
- }
- }
- /**获取预制体*/
- public static GetPrefab(name: string): cc.Node {
- if (this.otherPrefabDic["prefab/other/" + name]) {
- return cc.instantiate(this.otherPrefabDic["prefab/other/" + name]);
- } else {
- console.log("Prefab other not have:", this.otherPrefabDic["prefab/other/" + name]);
- return null;
- }
- }
- }
|