LoadUtils.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import {
  2. _decorator,
  3. Asset,
  4. AssetManager,
  5. assetManager,
  6. Component,
  7. error,
  8. Node,
  9. Prefab,
  10. resources,
  11. SpriteFrame
  12. } from 'cc';
  13. const {ccclass, property} = _decorator;
  14. @ccclass('LoadUtils')
  15. export class LoadUtils {
  16. public static loadSpriteFrame(url: string, succ: Function, fail: Function) {
  17. resources.load(url, SpriteFrame, (err, asset) => {
  18. if (err) {
  19. console.log(err);
  20. } else {
  21. succ(asset)
  22. }
  23. });
  24. }
  25. public static loadPrefab(url: string, succ: Function, fail: Function) {
  26. resources.load(url, Prefab, (err, asset) => {
  27. if (err) {
  28. console.log(err);
  29. } else {
  30. succ(asset)
  31. }
  32. });
  33. }
  34. public static loadBundleRes(bundleName: string, url: string, call?: Function, caller?: any, assetType?: typeof Asset) {
  35. let tmpBundle = assetManager.getBundle(bundleName);
  36. if (tmpBundle) {
  37. tmpBundle.load(url, assetType, (err: Error, asset: any) => {
  38. if (err) {
  39. console.log("加载资源异常:", url, err);
  40. } else {
  41. if (call) call.call(caller, asset);
  42. }
  43. });
  44. return;
  45. }
  46. assetManager.loadBundle(bundleName, (err: Error, bundle: AssetManager.Bundle) => {
  47. if (bundle) {
  48. bundle.load(url, assetType, (err: Error, asset: any) => {
  49. if (!err) {
  50. if (call) call.call(caller, asset);
  51. } else {
  52. console.log("加载资源异常:", url, err);
  53. }
  54. })
  55. } else {
  56. console.log("加载", bundle, "分包出错", err);
  57. }
  58. })
  59. }
  60. /**从分包中加载图片 */
  61. public static loadBundleSpriteFrame(bundleName: string, url: string, call?: Function, caller?: any) {
  62. this.loadBundleRes(bundleName, url, call, caller, SpriteFrame);
  63. }
  64. /**从分包中加载预制体 */
  65. public static loadBundlePrefab(bundleName: string, url: string, call?: Function, caller?: any) {
  66. this.loadBundleRes(bundleName, url, call, caller, Prefab);
  67. }
  68. }