resMgr.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. export class ResMgr {
  2. private static _inst: ResMgr;
  3. public static get inst(): ResMgr {
  4. if (this._inst == null) {
  5. this._inst = new ResMgr();
  6. }
  7. return this._inst;
  8. }
  9. // 跟随节点释放
  10. loadPrefab(name: string, parent: cc.Node): Promise<cc.Node>{
  11. return new Promise((resolve)=>{
  12. cc.resources.load(name, cc.Prefab, (err, res) => {
  13. if (res) {
  14. let node = cc.instantiate(res);
  15. parent.addChild(node);
  16. res.addRef();
  17. parent.on(cc.Node.EventType.CHILD_REMOVED, (child: cc.Node)=>{
  18. if(child.uuid == node.uuid) {
  19. res.decRef();
  20. }
  21. });
  22. resolve(node);
  23. return;
  24. }
  25. resolve(null);
  26. });
  27. });
  28. }
  29. getPrefab(name: string): Promise<cc.Prefab> {
  30. return new Promise((resolve)=>{
  31. cc.resources.load(name, cc.Prefab, (err, res) => {
  32. if (res) {
  33. resolve(res);
  34. return;
  35. }
  36. resolve(null);
  37. });
  38. });
  39. }
  40. createNode(res: cc.Prefab, parent: cc.Node){
  41. let node = cc.instantiate(res);
  42. parent.addChild(node);
  43. res.addRef();
  44. parent.on(cc.Node.EventType.CHILD_REMOVED, (child: cc.Node)=>{
  45. if(child.uuid == node.uuid) {
  46. res.decRef();
  47. }
  48. });
  49. return node;
  50. }
  51. }