一个快速校验地图资源是否符合兼容要求的小脚本(Cocos Creator3.8.0)

直接挂载运行,自动校验4大核心兼容点,报错直接给解决方案,新手秒懂

import { _decorator, Component, Node, TiledMap, resources, error, log } from 'cc';

const { ccclass, property } = _decorator;

@ccclass('MapCheck')

export class MapCheck extends Component {

@property({tooltip: "填resources下tmx路径,无后缀(例:map/test)"})

mapPath: string = "";

start() {

this.checkMapCompatibility();

}

// 一键校验核心逻辑

async checkMapCompatibility() {

log("开始校验Tiled地图兼容性(适配Cocos3.8.0+Tiled1.4.x)");

if(!this.mapPath) {error("请填写mapPath路径!"); return;}

try {

// 1. 加载地图资源校验

const tmxRes = await resources.load<TiledMap>(this.mapPath);

log("✅ 地图资源加载成功");

// 2. 校验核心兼容项(4大必过项)

this.checkFormat(tmxRes);

this.checkLayer(tmxRes);

this.checkTileSet(tmxRes);

this.checkPath();

log("🎉 所有兼容项校验通过,可正常使用");

} catch (e) {

error(`❌ 地图加载失败:${e}`);

log("💡 大概率原因:路径错误/资源不在resources/格式不兼容");

}

}

// 校验1:地图格式(必为XML,禁用二进制)

checkFormat(tiledMap: TiledMap) {

const tmxAsset = tiledMap.tmxAsset;

if(tmxAsset && tmxAsset.rawXml) {

log("✅ 地图格式为XML,符合兼容要求");

} else {

error("❌ 地图格式错误!需在Tiled导出XML格式,禁用二进制/CSV");

}

}

// 校验2:图层(禁用高版本图层,无中文名称)

checkLayer(tiledMap: TiledMap) {

const layers = tiledMap.getLayers();

const invalidLayers = layers.filter(layer =>

layer.name.includes(" ") || /\\u4e00-\\u9fa5/.test(layer.name)

);

if(invalidLayers.length > 0) {

error(`❌ 图层名非法:${invalidLayers.map(l=>l.name)},需改英文无空格`);

} else {

log("✅ 图层名称+类型符合兼容要求");

}

}

// 校验3:瓦片集(外部引用,无缺失)

checkTileSet(tiledMap: TiledMap) {

const tileSets = tiledMap.getTileSets();

if(tileSets.length === 0) {

error("❌ 瓦片集缺失!Tiled需导出外部tsx,且tmx/tsx/png同目录");

} else {

log(`✅ 瓦片集加载正常,共${tileSets.length}个`);

}

}

// 校验4:路径合法性(无中文)

checkPath() {

if(/\\u4e00-\\u9fa5/.test(this.mapPath)) {

error("❌ 地图路径含中文!需改为纯英文路径");

} else {

log("✅ 地图路径合法");

}

}

}

使用步骤(3步搞定)

  1. 挂载到Canvas节点,无需额外配置

  2. 在编辑器属性面板,填地图resources下路径(例map/test,无.tmx)

  3. 运行项目,控制台直接看结果(红叉报错/绿勾通过)

额外提示

• 报错直接看控制台提示,对应FAQ秒解

• 无需改任何代码,直接用就行

相关推荐
玖玥拾12 小时前
Cocos学习笔记:序列化、配置文件与数据驱动
游戏引擎·cocos2d
ZengLiangYi14 小时前
测试策略:单元测试 + 集成测试怎么写
javascript·typescript·node.js
深海潜水员19 小时前
【从零开始的C#游戏开发课程】- FarmStory1.0 日志系统和游戏资源的管理
游戏·c#·monogame
我还记得那天20 小时前
C语言随机数生成机制与猜数字游戏实现
c语言·开发语言·游戏
Swift社区20 小时前
鸿蒙游戏如何实现多端一致性?
游戏·华为·harmonyos
颂love20 小时前
Vue的两大生态以及组件通信
前端·javascript·vue.js·typescript
德迅云安全-上官21 小时前
游戏盾的原理解析与游戏盾的优势特点
游戏
张学徒21 小时前
Godot 4.x 中导入Excel文件的最简单的方式
游戏·godot·gdscript·游戏开发
hhb_61821 小时前
TypeScript泛型实战:企业级请求封装全解析
javascript·ubuntu·typescript