SceneUtils.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { assetManager, director, AssetManager } from "cc";
  2. export class ISceneInfo {
  3. name: string;
  4. bundle?: string;
  5. }
  6. export class SceneUtil {
  7. static async loadBundleSync(bundleName: string) {
  8. return new Promise((resolve, reject) => {
  9. assetManager.loadBundle(bundleName, (err, bundle: AssetManager.Bundle) => {
  10. resolve(!err);
  11. });
  12. });
  13. }
  14. static async unloadBundle(bundleName:string) {
  15. if (!bundleName) {
  16. return;
  17. }
  18. let bundle = assetManager.getBundle(bundleName);
  19. if (bundle) {
  20. bundle.releaseAll();
  21. assetManager.removeBundle(bundle);
  22. }
  23. }
  24. static async reloadScene(){
  25. return new Promise((resolve, reject) => {
  26. director.loadScene(director.getScene().name,()=>{
  27. resolve(true);
  28. });
  29. });
  30. }
  31. static async loadScene(scene: ISceneInfo) {
  32. return new Promise((resolve, reject) => {
  33. let bundle = assetManager.getBundle(scene.bundle);
  34. if (bundle) {
  35. director.loadScene(scene.name, () => {
  36. resolve(true);
  37. });
  38. }
  39. else {
  40. assetManager.loadBundle(scene.bundle, (err, bundle: AssetManager.Bundle) => {
  41. if (bundle) {
  42. director.loadScene(scene.name, () => {
  43. resolve(true);
  44. });
  45. }
  46. })
  47. }
  48. });
  49. }
  50. }