WeaponsConfigTest.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import { _decorator, Component } from 'cc';
  2. import { BundleLoader } from '../Core/BundleLoader';
  3. const { ccclass, property } = _decorator;
  4. /**
  5. * 武器配置测试组件
  6. * 用于验证装饰器加载weapons.json的功能
  7. */
  8. @ccclass('WeaponsConfigTest')
  9. export class WeaponsConfigTest extends Component {
  10. // @property({
  11. // type: JsonAsset,
  12. // tooltip: '拖拽weapons.json文件到这里进行测试'
  13. // })
  14. // public weaponsConfig: JsonAsset = null;
  15. // 武器配置数据,通过 BundleLoader 异步加载
  16. private weaponsConfigData: any = null;
  17. async start() {
  18. await this.loadWeaponsConfig();
  19. this.testWeaponsConfig();
  20. }
  21. /**
  22. * 异步加载武器配置
  23. */
  24. private async loadWeaponsConfig() {
  25. try {
  26. const bundleLoader = BundleLoader.getInstance();
  27. const weaponsConfigAsset = await bundleLoader.loadDataJson('weapons');
  28. this.weaponsConfigData = weaponsConfigAsset.json;
  29. console.log('[WeaponsConfigTest] 武器配置加载成功');
  30. } catch (error) {
  31. console.error('[WeaponsConfigTest] 武器配置加载失败:', error);
  32. this.weaponsConfigData = null;
  33. }
  34. }
  35. private testWeaponsConfig() {
  36. console.log('=== 武器配置测试开始 ===');
  37. // 检查 BundleLoader 加载的配置
  38. if (this.weaponsConfigData) {
  39. console.log('✅ 武器配置通过 BundleLoader 加载成功');
  40. const data = this.weaponsConfigData;
  41. // 检查weapons数组
  42. if (data.weapons && Array.isArray(data.weapons)) {
  43. console.log(`✅ weapons数组存在,包含 ${data.weapons.length} 个武器`);
  44. } else {
  45. console.error('❌ weapons数组不存在或格式错误');
  46. }
  47. // 检查blockSizes数组
  48. if (data.blockSizes && Array.isArray(data.blockSizes)) {
  49. console.log(`✅ blockSizes数组存在,包含 ${data.blockSizes.length} 个形状`);
  50. // 打印所有形状ID
  51. const shapeIds = data.blockSizes.map((shape: any) => shape.id);
  52. console.log('可用形状ID:', shapeIds);
  53. } else {
  54. console.error('❌ blockSizes数组不存在或格式错误');
  55. }
  56. console.log('武器配置数据结构:', {
  57. hasWeapons: !!data.weapons,
  58. weaponsCount: data.weapons?.length || 0,
  59. hasBlockSizes: !!data.blockSizes,
  60. blockSizesCount: data.blockSizes?.length || 0
  61. });
  62. } else {
  63. console.error('❌ 武器配置加载失败');
  64. console.log('请检查 weapons.json 文件是否存在于 data 目录中');
  65. }
  66. console.log('=== 武器配置测试结束 ===');
  67. }
  68. /**
  69. * 手动测试方法,可以在Inspector中调用
  70. */
  71. public async manualTest() {
  72. await this.loadWeaponsConfig();
  73. this.testWeaponsConfig();
  74. }
  75. }